【发布时间】:2014-02-05 13:42:44
【问题描述】:
public partial class ProcessContext : DbContext
{
static ProcessContext()
{
Database.SetInitializer<ProcessContext>(null);
}
public ProcessContext()
: base("Name=ProcessCS") //Comes from Config File
{
}
--DBSets
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
--Code
}
}
这是一个多租户数据库,我们有 3 个不同的数据库。集中式数据库位于公共位置,不会更改。这是存储其余数据库详细信息的地方。我需要创建连接字符串@runtime,详细信息将来自这个集中式数据库。有人可以告诉我怎么做吗?
我尝试使用以下代码,但它不起作用。这里会调用这个方法
public ProcessContext()
: base(nameOrConnectionString: ConnectionString())
{
}
private static string ConnectionString()
{
SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
sqlBuilder.DataSource = "XXX";
sqlBuilder.InitialCatalog = "YYY";
sqlBuilder.PersistSecurityInfo = true;
sqlBuilder.IntegratedSecurity = true;
sqlBuilder.MultipleActiveResultSets = true;
EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
entityBuilder.ProviderConnectionString = sqlBuilder.ToString();
entityBuilder.Metadata = "res://*/";
entityBuilder.Provider = "System.Data.SqlClient";
return entityBuilder.ToString();
}
【问题讨论】:
-
“但它不起作用” - 什么不起作用?您收到错误消息吗?
-
关于如何使用动态上下文的解决方案stackoverflow.com/a/16133150/1347784
-
@StevenV 当我尝试上面的代码时,我收到一条错误消息“登录失败。登录来自不受信任的域,不能用于 Windows 身份验证”。可能的解决方案是什么?
-
非常感谢,它工作正常。我在我的代码中发现了一点错误。
标签: entity-framework asp.net-mvc-4 .net-4.5 dbcontext