gpt4 book ai didi

c# - 将 Entity Framework 模型从 Web 项目移动到类库中

转载 作者:可可西里 更新时间:2023-11-01 03:00:16 24 4
gpt4 key购买 nike

我正在使用 Entity Framework,最近开始意识到在同一解决方案的另一个项目中使用您的 EF 模型的好处,这样我就可以从中构建多个 UI。

我将它移到了一个新的类库项目中,并更新了对 Web 项目中实体的所有引用,以使用该项目生成的新 dll。一切都很顺利,除了一个小问题。当我将 EF 移至新项目时,它仍然以某种方式从 Web 项目中的 web.config 读取其连接字符串(不要问我如何,因为我不知道)。

我在 EF 设计器中使用了“从数据库更新模型”,但它没有找到连接字符串(正如我在将其移至新项目后预期的那样)所以我使用向导生成了一个新的连接字符串,它做得很好。新的连接字符串现在驻留在类库项目的 App.config 中。属性窗口中的连接字符串现在是正确的,设计人员正在从 App.Config 中读取它。我继续从 Web 项目的 Web.Config 中删除了连接字符串。

现在运行应用程序时出现以下错误:

The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid.

如果我将连接字符串粘贴回 Web.Config,一切正常。我不想从头开始创建一个新的 EF 模型,因为它是一个相当复杂的模型,并且在从数据库中拉入后我做了很多重组。我已经遍历了生成的 CS 文件以及 edmx 文件中的 XML,但找不到任何有用的东西。任何帮助深表感谢。显然现在,在我弄清楚之前,我只是将连接字符串留在 web.config 中,因为无论出于何种原因,这似乎都有效。

最佳答案

这是设计使然;虽然类库中的配置文件是设计人员将使用的,但实际应用程序 的配置文件将在运行时使用。无论是 ASP.NET 项目的 Web.config 还是 Winforms 或 WPF 项目的 App.config,都将使用应用程序配置文件(或更高级别的文件,如 Machine.config);类库中的文件不是应用程序的一部分。

如果您尝试提供无需在应用程序或 Web 配置文件中指定连接字符串即可工作的 EF 模型,那么您将不得不以其他方式存储连接字符串(您总是很难-对其进行编码)并将其传递到上下文构造函数的适当重载中。

我的解决方案通常是在上下文本身上提供一个静态无参数函数,该函数使用适当的连接字符串调用此重载。

关于c# - 将 Entity Framework 模型从 Web 项目移动到类库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4939577/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com