Entity Framework 在运行时设置连接字符串

Entity Framework set connection string at runtime

过去几天我一直在努力完成这项工作,但没有成功。

这是我目前所做的。

string providerName = "System.Data.SqlClient";
string serverName = serverIPAddress;
string databaseName = myDBName;

SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();

sqlBuilder.DataSource = serverName;
sqlBuilder.InitialCatalog = databaseName;
sqlBuilder.PersistSecurityInfo = true;
sqlBuilder.MultipleActiveResultSets = true;
sqlBuilder.UserID = "sa";
sqlBuilder.Password = saPassword;

string providerString = sqlBuilder.ToString();

EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();

entityBuilder.Provider = providerName;

entityBuilder.ProviderConnectionString = providerString;

entityBuilder.Metadata = "res://*/TUModel.myModel.csdl|res://*/TUModel.myModel.ssdl|res://*/TUModel.myModel.msl";            
myEntities ctx = new myEntities(entityBuilder.ConnectionString);

实体 class 中的构造函数看起来像

public myEntities(string connectionString) : base("name=myEntities")
{
}

当我运行没有错误。但是,如果我从 app.config 中删除 'myEntities' 连接字符串,则会抛出异常。如果我保持原样,那么它会忽略代码中的连接字符串并使用 app.config.

中的连接字符串

如有任何帮助,我们将不胜感激。

您的上下文构造函数没有传递您的连接字符串,而是传递一个固定值 name=myEntities。将其更改为:

public myEntities(string connectionString) : base(connectionString)
{
}