NHIBERNATE会话没有关闭



我有一个安装了以下库的MVC应用程序。

  • autoFac
  • nhibernate

我有一个错误,在完成请求后,会话未关闭。我在SQL数据库中有多个会话,但是它们都没有关闭。

public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder) {
    var config = SessionFactory.ConofigCoreDb();
    var factory = SessionFactory.BuildCloudSQLSessionFactory(config);
    builder.RegisterInstance(config).As<Configuration>().SingleInstance();
    builder.RegisterInstance(factory).As<ISessionFactory>().SingleInstance();
    var session = builder.Register(x => x.Resolve<ISessionFactory>().OpenSession()).As<ISession>().InstancePerLifetimeScope();
    //sql services
    builder.RegisterType<ConsumerManager>().As<IConsumerManager>();
    builder.RegisterType<DefaultLogger>().As<ILogger>();
    builder.RegisterType<SettingsService>().As<ISettingService>();
    // and so on...
}

问题是,每次呼叫SQL会话正在生成的任何服务,我可以调用数据库,但是它无法正确处理,尽管Baseereposority类具有可允许的方法,可以刷新会话并正确关闭它们。

如何使AUTOFAC安全地正确关闭会话?

假设您使用的是autoFac.mvc集成库,则应在instanceperrequest上注册会话。当前您正在注册PerliFetimesCope,这是不正确的。

最新更新