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

时间:2015-08-13 13:46:42

标签: c# entity-framework runtime connection-string

过去几天我一直试图让这项工作取得成功。

这是我到目前为止所做的。

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

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

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

当我跑步时没有错误。但是,如果我删除了“我的朋友”。来自app.config的连接字符串,然后抛出异常。如果我保持原样,那么它将忽略代码中的连接字符串并使用app.config中的连接字符串。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

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

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