gpt4 book ai didi

entity-framework - EF6 DBContext 动态连接字符串

转载 作者:行者123 更新时间:2023-12-03 01:16:21 24 4
gpt4 key购买 nike

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
}
}

这是一个 Multi-Tenancy 数据库,我们有 3 个不同的数据库。集中式数据库位于公共(public)位置,不会改变。这是其余数据库详细信息将存储的位置。我需要创建连接字符串@运行时,其中详细信息将来自这个集中式数据库。有人可以告诉我该怎么做吗?

我尝试使用以下代码,但它不起作用。此处将调用此方法

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();
}

最佳答案

对于 SQL Server 连接,覆盖实体容器类:(适用于 EF6、SQL Server 2012 Express、VS2013)

public partial class PxxxxEntities
{
private PxxxxEntities(string connectionString)
: base(connectionString)
{
}

public static PxxxxEntities ConnectToSqlServer(string host, string catalog, string user, string pass, bool winAuth)
{
SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder
{
DataSource = host,
InitialCatalog = catalog,
PersistSecurityInfo = true,
IntegratedSecurity = winAuth,
MultipleActiveResultSets = true,

UserID = user,
Password = pass,
};

// assumes a connectionString name in .config of MyDbEntities
var entityConnectionStringBuilder = new EntityConnectionStringBuilder
{
Provider = "System.Data.SqlClient",
ProviderConnectionString = sqlBuilder.ConnectionString,
Metadata = "res://*/DbModel.csdl|res://*/DbModel.ssdl|res://*/DbModel.msl",
};

return new PxxxxEntities(entityConnectionStringBuilder.ConnectionString);
}
}

关于entity-framework - EF6 DBContext 动态连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21165364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com