[英]Changing the EF connection string gives - Keyword not supported: 'metadata'
在过去的几个小时中,我一直在研究此问题,发现了许多类似的主题,但是似乎没有一个有用的主题。
我有一个使用Entity Framework 5
的C#
应用程序,并且我有一个.edmx
数据模型,当使用来自应用程序配置文件的连接字符串时,它可以正常工作。
现在,我想在运行时更改连接字符串,但是会引发一个异常:
不支持的关键字:“元数据”。
这是我的代码:
private string GetNewConnectionString(string server, string database, string username, string password)
{
var sqlBuilder = new SqlConnectionStringBuilder()
{
DataSource = server,
InitialCatalog = database,
UserID = username,
Password = password,
IntegratedSecurity = true,
MultipleActiveResultSets = true
};
var entityBuilder = new EntityConnectionStringBuilder()
{
Provider = "System.Data.SqlClient",
ProviderConnectionString = sqlBuilder.ToString(),
Metadata = "res://*/MyTestModel.MyTestModel.csdl|res://*/MyTestModel.MyTestModel.ssdl|res://*/MyTestModel.MyTestModel.msl"
};
return entityBuilder.ToString();
}
public void insertInDB()
{
var newConnectionString = GetNewConnectionString(server, database, username, password);
//newConnectionString = newConnectionString .Replace("\"", """); // doesn't help
//newConnectionString = newConnectionString .Replace("\"", "'"); // doesn't help either
using (var context = new MyTestModel.MyEntities(newConnectionString)) // it crashes here
{
}
}
元数据应该是正确的,因为我已经从应用程序配置文件中复制了元数据,而且如果我将newConnectionString
的值复制到应用程序配置中并使用它,那么如果我将引号替换为"
。
这是newConnectionString
的值(我仅用一些虚拟凭据替换了凭据):
元数据= res:// /MyTestModel.MyTestModel.csdl|res:// /MyTestModel.MyTestModel.ssdl|res://*/MyTestModel.MyTestModel.msl;provider=System.Data.SqlClient;provider连接字符串=“ Data源= myServer;初始目录= myDatabase;集成安全性= True;用户ID = myDbUser;密码= myDbUserPassword; MultipleActiveResultSets = True”
我看不出有什么问题,有人可以发现吗?
这个答案: 实体框架在运行时更改连接解决了问题
我无法理解我的代码的问题所在,但是通过链接中的扩展方法可以正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.