如何更新Entity Framework连接字符串

4
我已经修改了web.config的连接字符串。然而,在调试期间,我仍然看到旧的连接字符串。
因此,我已经注释(并删除)了旧的连接字符串,通过服务器资源管理器添加了一个新的连接资源。在服务器资源管理器左侧面板上通过向导测试连接时显示已连接。
在按照向导操作后,当我访问web.config时,我没有看到新的连接字符串。
问题:我怀疑我没有按照添加连接字符串的步骤操作 - 如何从设计器中添加或更新连接字符串(在设计器属性面板中,编辑被禁用,输出类型是构建到程序集,右键单击只能给我添加实体等选项,删除字符串并运行应用程序不会提示连接字符串向导)。
以下是字符串 -
<connectionStrings><add name="MaintRecordsDB_v1" connectionString="metadata=res://*/Models.DB.Model.csdl|res://*/Models.DB.Model.ssdl|res://*/Models.DB.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=xxx.sample.net;initial catalog=MainDB;user id=maintRoot;password=hidden;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" /><add name="MainDBentities" connectionString="metadata=res://*/Models.DB.Model.csdl|res://*/Models.DB.Model.ssdl|res://*/Models.DB.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=windflower.arvixe.com;initial catalog=MX_Dashboard;user id=maintRoot;password=hidden;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" /></connectionStrings>

编辑问题2:我该如何使用设计器添加另一个EF连接字符串,例如MaintDB2,并在哪里手动更新它。

2个回答

2

在不知道你的上下文类是什么样子的情况下,假设你的DbContext类是生成的且假设它是部分类的,你可以尝试向其添加另一个部分类部分,该部分具有以命名连接字符串为参数的构造函数。

首先在你的app.config/web.config中添加一个命名连接:

<connectionStrings>
...
<add name="MyOtherConnection" connectionString="metadata=res://*/blahblahblah;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=ABunchOfOtherStuff;"
  providerName="System.Data.EntityClient" />
</connectionStrings>

然后在另一个(非生成的)文件中添加一个匹配的部分类,并使用构造函数接收连接字符串名称:

// the class name must match the name of your existing context
public partial class MyContext : DbContext
{
    public MyContext(string connectionStringName) : base("name=" + connectionStringName)
    {
    }
}

然后通过传递连接字符串的名称来使用您的上下文,这是一些无用代码的演示:

// ...
using (var context = new MyContext("MyOtherConnection"))
{
   var id = 1;
   var collection = context.MyEntities.Where(a => a.ID == id).ToList();
}

1

MVC中有许多基于惯例的事情。它优先使用惯例而非配置。按照惯例,这两个事物之间应该有一个链接。DbContext的类名与连接字符串匹配,以便通过惯例正确工作。

  1. 继承自DbContext的类如下:

    public class DbPersonContext : DbContext { ... }

  2. 必须拥有名称为Person的连接字符串。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接