NHibernate中StatelessSession和Session有什么区别?

mas*_*ani 24 c# nhibernate session

StatelessSessionSessionNHibernate有什么区别?

Sly*_*Sly 20

无状态会话不跟踪检索的实体.例如,对于常规的ISession以下代码:

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

将导致DB更新.ISession由于跟踪实体的数量在增长,因此跟踪会消耗内存并使性能随着时间的推移而降低.

相同的代码IStatelessSession将不会做任何事情.当您需要加载大量数据并执行一些批处理操作时,将使用无状态会话.它可用于以更"ado.net"的方式处理大型数据集.

  • 这个答案需要有关`StatelessSession`的更多细节.如何使用`StatelessSession`更新数据库的代码示例? (12认同)