NHibernate中StatelessSession
和Session
有什么区别?NHibernate中StatelessSession和Session有什么区别?
22
A
回答
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
的可能重复的[sessionfactory.openSession()和sessionfactory.openStatelessSession()之间的差异?](http://stackoverflow.com/questions/5496995/difference-between-sessionfactory-opensession-and-sessionfactory-openstatelesss) – 2011-05-24 08:00:21
回答[这里](http://stackoverflow.com/questions/2679636/nhibernate-isession-vs-istatelesssession) – Reniuz 2011-05-24 08:03:06