所以,我在一个单独的类库中创建了我的实体模型。我必须将连接字符串添加到 app.config
该类库的文件。然后我在我的 Web 应用程序中为该项目添加了一个 ref。我在 web.config
中添加了相同的连接字符串我的 Web 应用程序认为这是 Entity Framework 将从中读取连接字符串的地方。
一切都很好,直到我部署了我的网络应用程序。部署时,我更改了 web.config
中的连接字符串(不是类库的app.config
),我开始遇到错误。经过一番研究,我发现 web.config
中的连接字符串和 app.config
必须匹配!!
这简直是愚蠢!每次我需要将我的 Web 应用程序部署到不同的环境时,我都必须返回并修改 app.config
中的连接字符串。文件,然后重新编译我的类库项目,以便它可以获得刷新的连接字符串?
有没有人找到更好的方法来做到这一点?我的意思是,我不能是唯一一个想到将实体模型放在单独的组件中的人。
可能的解决方案(如果您使用的是 EF 4.1):
因为我们需要在类库项目中包含 app.config 的唯一原因是为了 EF 设计器。如果我们放弃设计器方法并使用 Code-First (EF 4.1),您将不需要为您的类库项目创建 app.config 文件。
最佳答案
我们遇到了同样的情况。我已经要求每个开发人员只在选择第一个连接字符串的情况下编译 EF 程序集。
这样,在部署时,web.config 中只需要一个连接字符串。
最终,如果每台开发机器和部署服务器在第一个(并且希望只有)连接字符串(即不是 ConnectionString4)中都有正确的连接信息(对于该机器),那么生活很容易。
基本上,当默认连接字符串(最新选择的)无法连接时,设计人员会将额外的连接字符串添加到开发连接字符串中。
此外,没有理由对将数据层放入单独的程序集中感到难过。有时这是更可取的。
最后,确保包含连接字符串的配置文件没有与源代码控制 Hook 非常重要——连接字符串通常是本地化的,如果出现这种情况,将导致 EF 和 LINQ to SQL 中的“多连接字符串问题”每次从源代码管理更新项目时,它都会被错误的值覆盖。
关于.net - 等待!哪个配置文件? ( Entity Framework 连接字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6223223/