我应该如何编辑Entity Framework的连接字符串?

127

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

原始连接字符串是由Entity Data Model向导自动生成的。然后,该连接字符串无法更改 - 它在.edmx设计器的属性窗口中保持禁用状态。如果可以的话,我希望避免手动编辑XML(在app.config中),因此我想知道是否有一种方法可以重新进入原始向导屏幕,进行连接字符串更改并让工具为我编辑app.config文件。

5个回答

199

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


17
太好了,这正是我在寻找的答案。为了保险起见,我将现有的字符串注释掉(而不是删除它),保存app.config更改,右键单击设计器,选择“从数据库更新模型”。然后,向导允许我在连接字符串中包含敏感信息(uid和pwd)。谢谢! - DeveloperDan
5
如果您正在使用模型优先的方式,则右键单击设计器并选择“从模型生成数据库”而不是其他选项。 - Carl Onager
2
这对我也起作用了,除了我不得不更新App.config文件,然后重新启动VS.NET 2012。它没有检测到App.config文件的更改。 - Garry English
2
我必须显式调用save函数来保存app.config文件,以便设计器能够识别连接字符串已被删除。 - Rossco
1
重启 VS 的替代方法是:1. 在 app.config 中注释掉连接字符串 2. 重新构建包含 .edmx 的项目 3. 右键单击 .edmx 设计面板并选择“从数据库更新模型...”,这将带出连接字符串向导。 - RIanGillis
显示剩余4条评论

18

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

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


+1 提醒:如果他们将其放在配置文件中,那么意味着他们希望您能够更改它。我主要担心我的更改可能会被覆盖。 - tobiak777
你应该去修改edmx所属项目的app config中的连接字符串。 不是顶级应用程序的配置(在运行时使用)。 - akava

12

通常情况下,您会在Web.config中定义连接字符串。在生成edmx文件后,连接字符串将存储在App.Config中。如果您想要更改连接字符串,请前往app.config并删除所有连接字符串。现在进入edmx,右键单击设计器表面,选择从数据库更新模型,从下拉列表中选择连接字符串,点击下一步,添加或刷新(选择您需要的),然后完成。

输出窗口会显示类似于以下内容:

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


我遇到了类似的问题,但当我注释掉连接字符串、更新模型、选择新的连接字符串时,我的模型中的context.cs类被清空了。不确定为什么会这样,除非它无法生成context类? - bitshift
1
它不应该这样做。也许你的T4模板工具已经损坏了。 - DanKodi
我同意,这“不应该”发生。然而,当对基础架构进行多个非微不足道的更改时,我已经失去了计数,最终只能将模型删除并创建一个新的模型。也许使用EF7和删除edmx文件可以帮助解决问题。无论如何,这次我也是这样做的,只需在模型中突出显示所有内容,然后按删除键并将这些项目重新引入。 - bitshift

3

请按以下步骤操作:

  1. 打开app.config文件,并注释掉连接字符串(保存文件)
  2. 打开edmx文件(进入属性,连接字符串应为空),然后再关闭edmx文件
  3. 打开app.config文件并取消注释(保存文件)
  4. 打开edmx文件,进入属性,您应该看到连接字符串已更新!

1
打开.edmx文件,使用任何文本编辑器更改Schema="所需模式",并打开app.config/web.config,从连接字符串中更改用户ID和密码。完成。

是的,这就做到了。 - Luis Deras
这是什么意思?Schema 是一个 XML 元素。它不能被更改为“您所需的模式”。 - Bryan Williams

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