[英]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.