【问题标题】:Wait! which config file? (Entity Framework Connection String)等待!哪个配置文件? (实体框架连接字符串)
【发布时间】:2011-09-07 13:40:45
【问题描述】:

所以,我在一个单独的类库中创建了我的实体模型。我必须将连接字符串添加到该类库的app.config 文件中。然后我在我的 Web 应用程序中为该项目添加了一个 ref。我在我的 Web 应用程序的 web.config 中添加了相同的连接字符串,认为这是 Entity Framework 将从中读取连接字符串的地方。

一切都很好,直到我部署了我的网络应用程序。当我部署时,我更改了web.config(不是类库的app.config)中的连接字符串,并且开始出现错误。经过一番研究,我发现web.configapp.config 中的连接字符串必须匹配!!

这简直是愚蠢!每次我需要将我的 Web 应用程序部署到不同的环境时,我都必须返回并修改 app.config 文件中的连接字符串,然后重新编译我的类库项目,以便它可以获得刷新的连接字符串?

有没有人找到更好的方法来做到这一点?我的意思是,我不能是唯一一个想到将实体模型放在单独的程序集中的人。

可能的解决方案(如果您使用的是 EF 4.1): 因为我们需要在类库项目中包含 app.config 的唯一原因是为了 EF 设计器。如果我们放弃设计器方法并使用 Code-First (EF 4.1),您将不需要为您的类库项目创建 app.config 文件。

【问题讨论】:

  • 我的设置完全相同,但根本没有这个问题。我所做的只是修改 web.config 并且它可以正常工作。 app.config 未部署,这可能是您的问题。
  • 我以为你在做某事,但我检查了,我没有复制/部署 app.config ... dll 不知何故知道两个连接字符串(一个在 app.config 中,一个在 web .config) 不匹配。如果我的 web.config 连接字符串只是覆盖 app.config 生活会很好,但它不会发生。

标签: .net entity-framework connection-string entity-framework-4.1


【解决方案1】:

我们遇到了同样的情况。我已经要求每个开发人员只在选择第一个连接字符串的情况下编译 EF 程序集。

这样部署时,web.config中只需要一个连接字符串。

最终,如果每台开发机器和部署服务器在第一个(希望是唯一的)连接字符串(即不是 ConnectionString4)中都有正确的连接信息(对于该机器),那么生活很容易。

基本上,当默认连接字符串(最新选择的)无法连接时,设计人员会将额外的连接字符串添加到开发连接字符串中。

此外,没有理由对将数据层放入单独的程序集感到难过。有时这更可取。

最后,确保包含连接字符串的配置文件没有与源代码控制挂钩非常重要——连接字符串通常是本地化的,并且会导致 EF 和 LINQ 中的“多连接字符串问题”如果每次从源代码管理更新项目时,它都会被错误的值覆盖,则返回到 SQL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    相关资源
    最近更新 更多