请任何人都可以建议是否可以根据当前文化使用 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 线程也没有让我朝着正确的方向前进。