如何停止Fluently.Configure自动连接

Stu*_*nar 3 nhibernate informix inversion-of-control unity-container fluent-nhibernate

如何自动提取Fluently.自动配置与DB的连接?

我们的设置详述如下.

我们有以下静态方法来创建会话工厂:

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();
        }
Run Code Online (Sandbox Code Playgroud)

这与我们的IOC设置一起用于创建SessionFactory,但是,由于我们的数据库团队需要,每个用户必须打开他/她自己的连接作为他们的用户(使用非个性化) - 允许进程识别,看谁正在运行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);
}
Run Code Online (Sandbox Code Playgroud)

当我们的UOW呼叫处理时,这些连接关闭.

我们调用CreateSessionFactory()APP Start然后通过IOC传递此工厂,但此时没有非个性化用户,因此在首次加载时会导致应用程序错误.

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

Osk*_*ren 5

您需要禁用automatic-keyword-quoting:configuration.SetProperty(Environment.Hbm2ddlKeyWords,"none")

有关详细信息,请参阅此文章"防止NHibernate连接到configuration.BuildSessionFactory()上的数据库":https: //groups.google.com/forum/?fromgroups =#!topic/nhusers/F8IxCgYN038