現在のカルチャに基づいて、Ninjectバインディングを使用してDbContextの接続文字列を切り替えることができますか?私の現在の(動作していない)タラは以下の通りです。 Ninjectを使用している場合、文化に基づいて接続文字列を切り替える
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 - dynamically specifying a connection string based on a sub domainに基づいているが、それは私がそのようにここで読んだことがある...アプリケーションが起動する場合を除き、各リクエストに応じて、私のGetCultureBasedConnectionString()
方法に
を介してコールされませんNInjects Rebind()メソッドを使用していないが良いです。
This SO threadでも正しい方向に私を得ることはできませんでした。