我应该如何编辑实体框架连接字符串?


115

最近,我不得不编辑我的app.config文件,以更改Entity Framework数据模型(.edmx文件)的连接字符串。但是我想知道:是否可以使用设计器来编辑EF连接字符串?

原始连接字符串由“实体数据模型”向导自动生成。然后,不能更改连接字符串-在.edmx设计器的属性窗口中将其禁用。我希望避免(如果可以)手动编辑XML(在app.config中),因此我想知道是否有办法返回到原始向导屏幕来更改连接字符串并让该工具编辑app.config文件为了我。

Answers:


190

如果您从app.config文件中删除连接字符串,则重新运行实体数据模型向导将指导您建立新的连接。


17
优秀的。这正是我一直在寻找的答案。为了安全起见,我注释掉了现有的字符串(而不是删除它),保存了app.config更改,右键单击设计器,然后选择“从数据库更新模型”。然后,向导让我在连接字符串中包含敏感信息(uid和pwd)。谢谢!
DeveloperDan

5
如果您先进行模型设计,则右键单击设计器,然后单击“从模型生成数据库”
Carl Onager 2012年

2
这对我也很有效,除了我必须更新App.config文件,然后重新启动VS.NET2012。它没有检测到App.config文件已更改。
Garry English

2
我必须显式调用app.config文件上的save,以使设计人员能够识别出连接字符串已被删除。
罗斯科2014年

1
重新启动VS的一种替代方法是1.注释掉app.config中的连接字符串2.重建包含.edmx的项目3.右键单击.edmx设计图面,然后从数据库中更新模型...连接字符串向导。
RIanGillis

18

不,您不能在设计器中编辑连接字符串。连接字符串不是EDMX文件的一部分,它只是配置文件中的引用值,可能是因为它在属性窗口中只是只读的。

修改配置文件是常见的任务,因为有时您想进行更改而不重建应用程序。这就是存在配置文件的原因。


+1提醒您:如果他们将其放在配置文件中,则表示他们希望您能够对其进行更改。我主要担心的是,我的更改可能会被覆盖
tobiak777

您应该在edmx所属项目的应用程序配置中更改连接字符串。不是顶级应用程序的配置(在运行时使用)。o_0
akava

9

通常,您可以在Web.config中定义连接字符串。生成edmx之后,连接字符串将存储在App.Config中。如果要更改连接字符串,请转到app.config并删除所有连接字符串。现在转到edmx,右键单击设计器图面,从数据库中选择更新模型,从下拉列表中选择连接字符串,然后单击下一步。,添加或刷新(选择所需的内容)并完成。

在输出窗口中,它将显示类似这样的内容,

生成的模型文件:UpostDataModel.edmx。从数据库加载元数据花费了00:00:00.4258157。生成模型花费了00:00:01.5623765。 将连接字符串添加到App.Config文件中。


我遇到类似的问题,但是当我注释掉连接字符串,更新模型,选择新的连接字符串时,模型中的context.cs类将被清空。不知道为什么这样做,除非它只是无法生成上下文类?
2013年

1
它不应该那样做。可能是您的T4模板工具已损坏。
DanKodi

我同意,这“不应该”。但是,当我对基础架构进行了多次不平凡的更改时,我已经失去了计算的次数,最终我不得不简单地破坏模型并创建一个新模型。也许使用EF7并删除edmx文件可能会有所帮助。无论哪种方式,这是我我所做的这一次为好,在模型中只强调了一切,按Delete键,还把这些项目回。
位位移

2

打开.edmx文件,任何文本编辑器更改Schema =“您所需的架构 ”,还可以打开app.config / web.config,并从连接字符串中更改用户ID和密码。你完成了。


是的,做到了。
ggderas

1

请执行以下步骤:

  1. 打开app.config并注释连接字符串(保存文件)
  2. 打开edmx(转到属性,连接字符串应为空白),再次关闭edmx文件
  3. 打开app.config并取消注释连接字符串(保存文件)
  4. 打开edmx,转到属性,您应该看到连接字符串已更新!!
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.