在很少重新启动的 Windows 服务中创建 NHibernate.ISession 实现的一个实例是否有害?我对 ISession 不是很了解,但据我了解,ISession 实现的一个实例包含对事务的引用,这些事务可以在我提交更改后立即处理掉
using (ITransaction trans = MyISession.BeginTransaction())
{
...
trans.Commit();
}
当我在线查看代码示例时,使用 autofac 的实现 ISession 几乎总是设置为 InstancePerLifetimeScope()。这实际上意味着实例一旦脱离创建它的上下文(例如 HTTP 请求)就会被释放。
有人可以告诉我将 nhibernate 注册为 autofac 中的单个实例以用于长时间运行的 Windows 进程的危害(如果有的话)吗?
builder.Register(c => new MyIsessionFactory.OpenSession()).As<ISession>().SingleInstance();