現在のカルチャに基づいて、Ninject バインディングを使用して DbContext の接続文字列を切り替えることができるかどうか、誰にでもアドバイスできますか? 私の現在の(動作していない)タラは以下の通りです。
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
try
{
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
return kernel;
}
catch
{
kernel.Dispose();
throw;
}
}
private static string GetCultureBasedConnectionString()
{
string culture = "de-DE"; // TODO Replce with Thread.CurrentThread.CurrentCulture.Name
string cultureBasedConnectionString = ConnectionStringHelper.GetConnectionStringWithCulture(culture);
return cultureBasedConnectionString;
}
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<ApplicationDb>().To<ApplicationDb>()
.InRequestScope()
.WithConstructorArgument("connectionString", context => GetCultureBasedConnectionString());
.
.
.
}
これは、Ninject - サブドメインに基づいて接続文字列を動的に指定するGetCultureBasedConnectionString()
例に基づいていますが、アプリケーションの起動時を除いて、リクエストごとにメソッドを呼び出すことはありません...
ここで読んだので、NInjects Rebind() メソッドを使用するのは良くありません。
この SO スレッドも、私を正しい方向に導きませんでした。