接続文字列接続文字列で属性application name = useridを使用し、query select app_name()を使用してSQL Serverにアクセスすることによってloggeduserid値を動的に渡す必要があります。使用問題接続文字列を動的に変更しながらNInjectを再バインドする
技術: 1)4.0 2を.NET)NHibernateの 3)Ninject
ログイン中の前に、私は、アプリケーション名属性なしで接続文字列をロードするためにNinject IoCコンテナとNHibernateはを使用してログに記録された後にしていますNHibernateConfiguration
public override void Load()
{
Bind<ISession>().ToMethod(x => x.Kernel.Get<NHibernateConfiguration>()
.GetSessionFactory()
.OpenSession());
Bind<ISessionFactory>().ToMethod(x => x.Kernel.Get<NHibernateConfiguration>().GetSessionFactory());
}
ジェクトにログインする前に
を次のように私は、コンストラクタ値としてログオンしているユーザーIDを渡すとNhibernateConfigurationクラスを再バインドしていています
ログイン後、constructor引数を指定してloggeduseridを渡すと、次のようになります。
using (var kernal = ServiceLocator.GetKernel())
{
kernal.Rebind<NHibernateConfiguration>().To<NHibernateConfiguration>()
.WithConstructorArgument("loggedUserId", user.Id);
}
しかし、NHibernateConfigurationクラスを再バインドまたは注入できません。
Ninject
通常、コンストラクタ/パラメータ注入シナリオではninjectが使用されます –