在Windows服务中使用Autofac的NHibernate会话处理程序

时间:2014-04-14 19:21:52

标签: windows nhibernate autofac

我有一个使用NHibernate和Autofac的Mvc系统正常工作......我这样做是为了管理NH会话:

public static void Init(Assembly assembly)
{            
     var builder = new ContainerBuilder();

     builder.RegisterControllers(assembly);

     builder.Register(x => NHibernateInitializer.BuildSessionFactory()).SingleInstance();
     builder.Register(x => x.Resolve<ISessionFactory>().OpenSession()).InstancePerHttpRequest();

     builder.RegisterModule(new AutofacWebTypesModule());
     var container = builder.Build();
     DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

}

现在我需要配置Windows服务以使用NHibernate,但我不确定是否可以使用Autofac。 有什么想法吗?

由于

1 个答案:

答案 0 :(得分:2)

我会将ISession和其他服务注册为.InstancePerLifetimeScope(),然后让每个操作都在自己的子LifetimeScope中运行。这将确保在操作结束时很好地清理所有IDisposable服务。