更改EF连接字符串给出 - 不支持关键字:'元数据'

时间:2015-11-02 15:23:38

标签: c# entity-framework entity-framework-5 connection-string

在过去的几个小时里,我一直在研究这个问题,发现了许多类似的话题,但似乎都没有帮助。

我有一个使用C#的{​​{1}}应用程序,我有一个Entity Framework 5数据模型,在使用app配置文件中的连接字符串时效果很好。

现在我想在运行时更改连接字符串,但它会抛出一个异常,说明:

  

不支持关键字:'元数据'。

以下是我的代码:

.edmx

元数据应该是正确的,因为我已经从app配置文件中复制了它,如果我将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 { } } 的值复制到应用程序配置并使用它,如果我用{替换引号,它可以正常工作{1}}。

这是newConnectionString的值(我只用一些虚拟凭证替换了凭证):

  

元数据= RES:// /MyTestModel.MyTestModel.csdl|res:// /MyTestModel.MyTestModel.ssdl|res://*/MyTestModel.MyTestModel.msl;provider=System。 Data.SqlClient提供方   connection string =“Data Source = myServer; Initial   Catalog = myDatabase; Integrated Security = True; User   ID = myDbUser;密码= myDbUserPassword; MultipleActiveResultSets =真“

我看不出它有什么问题,有人能发现什么吗?

1 个答案:

答案 0 :(得分:0)

这个答案:Entity Framework change connection at runtime解决了问题

我无法理解代码的问题是什么,但它可以通过链接的扩展方法正常工作。