2011-05-24 71 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