实体框架在运行时设置连接字符串

本文关键字:连接 字符串 设置 运行时 框架 实体 | 更新日期: 2023-09-27 18:07:39

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

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

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删除'myEntities'连接字符串,那么它会抛出异常。如果我让它保持原样,那么它会忽略代码中的连接字符串并使用app.config中的连接字符串。

实体框架在运行时设置连接字符串

您的上下文构造函数没有传递您的连接字符串,而是通过name=myEntities的固定值传递。改成这样:

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