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个不同的数据库。集中式数据库位于公共位置,并且不会更改。这是存储其余数据库详细信息的地方。我需要在运行时创建连接字符串,其中详细信息将来自此集中式数据库。请问有人知道如何操作吗?
我尝试了以下代码,但它没有起作用。该方法将在此处调用
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();
}