3

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();
        }

これは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);
}

これらの接続は、UOW呼び出しが破棄されるときに閉じられます。

APP Startを呼び出しCreateSessionFactory()てから、このファクトリをIOCで渡しますが、この時点では非個人化ユーザーがいないため、最初のロード時にアプリエラーが発生します。

最初の読み込みなどにアクセスできる標準ユーザーを使用することを検討しましたが、もっと良い方法は確かにありますか?

4

1 に答える 1

5

自動キーワード引用を無効にする必要があります:configuration.SetProperty(Environment.Hbm2ddlKeyWords、 "none")

詳細については、「NHibernateがconfiguration.BuildSessionFactory()でデータベースに接続するのを防ぐ」に関するこの投稿を参照してください: https ://groups.google.com/forum/?fromgroups =#!topic / nhusers / F8IxCgYN038

于 2013-01-21T13:15:21.503 に答える