簡體   English   中英

更改EF連接字符串可獲得-不支持的關鍵字:“元數據”

[英]Changing the EF connection string gives - Keyword not supported: 'metadata'

在過去的幾個小時中,我一直在研究此問題,發現了許多類似的主題,但是似乎沒有一個有用的主題。

我有一個使用Entity Framework 5C#應用程序,並且我有一個.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM