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で渡しますが、この時点では非個人化ユーザーがいないため、最初のロード時にアプリエラーが発生します。
最初の読み込みなどにアクセスできる標準ユーザーを使用することを検討しましたが、もっと良い方法は確かにありますか?