我有一个 Mvc 系统,可以与 NHibernate 和 Autofac 一起正常工作...我这样做是为了管理 NH session :
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。 有什么想法吗?
谢谢
请您参考如下方法:
我会将 ISession
和其他服务注册为 .InstancePerLifetimeScope()
,然后让每个操作在其自己的子 LifetimeScope 中运行。这将确保所有 IDisposable
服务在操作结束时得到很好的清理。