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