2011-05-24 32 views
22

NHibernate中StatelessSessionSession有什麼區別?NHibernate中StatelessSession和Session有什麼區別?

+0

的可能重複的[sessionfactory.openSession()和sessionfactory.openStatelessSession()之間的差異?](http://stackoverflow.com/questions/5496995/difference-between-sessionfactory-opensession-and-sessionfactory-openstatelesss) – 2011-05-24 08:00:21

+0

回答[這裏](http://stackoverflow.com/questions/2679636/nhibernate-isession-vs-istatelesssession) – Reniuz 2011-05-24 08:03:06

回答

18

無狀態會話不跟蹤檢索到的實體。例如,對於常規的ISession以下代碼:

var session = sessionFactory.OpenSession() 
using(var transaction = session.BeginTransaction()){ 
    var user = session.Get<User>(1); 
    user.Name = "changed name"; 
    transaction.Commit(); 
} 

將導致數據庫中的更新。由於跟蹤的實體數量不斷增加,此跟蹤會消耗內存並使性能隨着時間的推移而降低。

IStatelessSession相同的代碼不會做任何事情。當需要加載大量數據並執行一些批處理操作時,將使用無狀態會話。它可以用來處理更多「ado.net」風格的大型數據集。

+7

這個答案需要更多關於'StatelessSession'的細節。如何使用'StatelessSession'更新數據庫的代碼示例? – Jess 2015-01-30 14:00:50

相關問題