我有一个使用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。 有什么想法吗?
由于
答案 0 :(得分:2)
我会将ISession
和其他服务注册为.InstancePerLifetimeScope()
,然后让每个操作都在自己的子LifetimeScope中运行。这将确保在操作结束时很好地清理所有IDisposable
服务。