Nhibernate 如何流畅地停止。配置自动连接

Nhibernate 如何流畅地停止。配置自动连接,nhibernate,fluent-nhibernate,inversion-of-control,unity-container,informix,Nhibernate,Fluent Nhibernate,Inversion Of Control,Unity Container,Informix,我如何才能流利地使用。自动配置与数据库的连接 下面详细介绍了我们的设置 我们使用以下静态方法创建会话工厂: public static ISessionFactory CreateSessionFactory() { return Fluently.Configure() .Database( IfxOdbcConfiguration .Informix

我如何才能流利地使用。自动配置与数据库的连接

下面详细介绍了我们的设置

我们使用以下静态方法创建会话工厂:

public static ISessionFactory CreateSessionFactory()
        {
          return Fluently.Configure()
              .Database(
                 IfxOdbcConfiguration
                .Informix
                .ConnectionString("DSN=ODBCCONNECTION")
                .Driver<CompanyCore.Nhibernate.Core.ProfiledODBCClientDriver>()
                .Dialect<InformixDialect1000>()
                .ShowSql() 
              )
              .Mappings(
              m => m.FluentMappings.AddFromAssemblyOf<Task>()
              )
              .BuildSessionFactory();
        }
公共静态ISessionFactory CreateSessionFactory()
{
流畅地返回。Configure()
.数据库(
IfxOdbcConfiguration
.Informix
.ConnectionString(“DSN=ODBCCONNECTION”)
.司机()
.方言()
.ShowSql()
)
.映射(
m=>m.FluentMappings.AddFromAssemblyOf()
)
.BuildSessionFactory();
}
它与我们的IOC设置一起用于创建SessionFactory,但是,由于我们的DB团队的要求,每个用户都必须作为自己的用户打开自己的连接(使用模拟),以便识别进程,查看谁在Informix服务器上运行什么

要创建我们使用的各个连接,请执行以下操作:

public static ISession GetMySession(ISessionFactory factory, string user)
{
    CompanyCore.Nhibernate.Core.ProfiledODBCClientDriver drv = new Enact.Nhibernate.Core.ProfiledODBCClientDriver();

    drv.Configure(new Dictionary<string, string>());

    string conn = "DSN=ODBCCONNECTION";

    IDbConnection db = drv.CreateConnection();

    db.ConnectionString = conn;
    db.Open();

    return factory.OpenSession(db);
}
公共静态ISession GetMySession(ISessionFactory工厂,字符串用户)
{
CompanyCore.Nhibernate.Core.ProfileDodbClientDriver drv=新颁布的.Nhibernate.Core.ProfileDodbClientDriver();
配置(新字典());
字符串conn=“DSN=ODBCCONNECTION”;
IDbConnection db=drv.CreateConnection();
db.ConnectionString=conn;
db.Open();
返回factory.OpenSession(db);
}
当UOW调用dispose时,这些连接将关闭

我们在应用程序启动时调用
CreateSessionFactory()
,然后将此工厂与IOC一起传递,但此时没有模拟用户,因此在第一次加载时会导致应用程序错误


我们考虑过使用标准用户,该用户可以访问首次加载之类的内容,但肯定有更好的方法?

您需要禁用自动关键字引用: configuration.SetProperty(Environment.Hbm2ddlKeyWords,“无”)

有关更多详细信息,请参阅关于“防止NHibernate在configuration.BuildSessionFactory()上连接到数据库”的帖子:

完美-额外链接的道具也+1