在很少重新启动的Windows服务中创建一个NHibernate.ISession实现的实例是否有害?我对ISession没有很好的理解,但根据我的理解,ISession实现的实例保存了对我可以在我提交更改后立即处理的事务的引用
using (ITransaction trans = MyISession.BeginTransaction())
{
...
trans.Commit();
}
当我在线检查代码示例时,使用autofac的实现ISession几乎总是设置为InstancePerLifetimeScope()。这实际上意味着实例将在创建它的上下文(例如HTTP请求)之后立即处理。
有人可以告诉我在长时间运行的Windows进程中将nhibernate注册为autofac中的单个实例的危害(如果有的话)吗?
builder.Register(c => new MyIsessionFactory.OpenSession()).As<ISession>().SingleInstance();
答案 0 :(得分:3)
会话会跟踪已加载甚至引用的所有实体和集合。
在应用的所有生命周期内保持会话开放会导致: