繁体   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