1

我收到以下错误:

指定的命名连接在配置中未找到,不打算与 EntityClient 提供程序一起使用,或者无效。

我刚刚创建了我的第一个 EF 项目。这是一个 MVC 应用程序,我在 MVC 项目中添加了实体模型。我还添加了一个 DataAccess 类和一个使用 NUnit 运行测试的类。最后,我将添加一个引用 DataAccess 类的服务类。所以,代码目前看起来像这样(我只是想进行一个测试来证明 EF 正在做它的事情):

  • Text Fixture 调用 DataAccess 类
  • DataAccess 类调用实体框架
  • 实体框架访问本地数据库

目前,我只是想从一张表中返回所有行/一列。请记住,所有这些文件都在一个项目中。我读过很多书,这个问题源于多个项目,但这似乎不适用于我的情况。我已经检查了“主要”web.config 文件。连接字符串看起来没问题。我也将相同的配置部分(即connectionStrings)复制到特定于调试的配置文件中,但这并没有什么不同。任何想法为什么我会看到这个错误?

谢谢,杰

解决方案树的快照

连接字符串:

这是创建实体访问文件时对话框中的连接字符串(数据源是两个字符串中的句点[即本地主机]):

metadata=res:// /EntityDataModel.csdl|res:// /EntityDataModel.ssdl|res://*/EntityDataModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.;初始目录=URIntake;集成安全=真"

这是来自 web.config 文件的连接字符串。出于所有实际目的,它们看起来是一样的:

metadata=res:// /EntityDataModel.csdl|res:// /EntityDataModel.ssdl|res://*/EntityDataModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.;初始目录=URIntake;集成安全=True;multipleactiveresultsets=True;App=EntityFramework"

4

1 回答 1

1

微软 Zlatko Michailov说,

app.config 不在 exe 所在的二进制目录中。请执行以下操作:

  1. 目视验证具有预期内容的 app.config 是否在编译 exe 的目录中。(在项目根目录中存在是不够的。)

  2. 在您的应用程序中使用 System.Configuration.ConfigurationManager 来检查您的 exe 正在使用的 app.config 的内容。

我也在查看连接字符串的内容,我可以说它可能无法在多项目环境中工作(除非您在每个项目中都复制了 EDM)。

原因是“。” 解析为加载 exe 的目录。如果你想重复使用相同的 EDM,你至少必须在路径中后退几步,然后导航到 EDM 所在的项目,例如“......\Proj1\AdventureWorksModel”。

此外,您可以考虑使用 |DataDirectory| 宏 - 当您加载 AppDomain 时,您可以设置 |DataDirectory| 指向 EDM 所在的确切目录,然后在连接字符串中使用该目录,例如“|DataDirectory|\AdventureWorksModel”。

如果您正在处理 ASP.NET 项目,则可以使用“~”来表示项目根目录。在后一种情况下,您不能引用项目层次结构之外的模型。

欲了解更多信息,请点击此处

更新 1:

在这里您可以尝试以下提到的步骤

  1. 清除web.config文件中的连接字符串内容,如下所示

    在此处输入图像描述

  2. 然后从您的项目中删除您的*.edmx文件

  3. 像下面一样重新创建它(示例一)。不要忘记勾选“将 web.config 中的实体连接设置保存为:”

在此处输入图像描述

最后一步:之后转到web.config 文件并检查您的连接字符串是否与上述步骤中“实体连接字符串:”上显示的完全相同(我在上图中的红色标记上显示了它)。

我希望这对你有帮助。

于 2012-12-25T10:10:23.087 回答