无法获得实体框架连接

时间:2012-12-24 21:06:22

标签: entity-framework asp.net-mvc-4

我收到以下错误:

  

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

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

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

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

谢谢, 杰

Snapshot of the solution tree

连接字符串:

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

  

元数据= RES:// /EntityDataModel.csdl|res:// /EntityDataModel.ssdl|res://*/EntityDataModel.msl;provider=System.Data.SqlClient;provider   connection string =“Data Source = .; Initial Catalog = URIntake; Integrated   安全=真“

这是web.config文件中的连接字符串。出于所有实际目的,它们似乎是相同的:

  

元数据= RES:// /EntityDataModel.csdl|res:// /EntityDataModel.ssdl|res://*/EntityDataModel.msl;provider=System.Data.SqlClient;provider   connection string =“data source = .; initial   目录= URIntake;集成   安全= TRUE; multipleactiveresultsets = TRUE;应用=的EntityFramework“

1 个答案:

答案 0 :(得分:1)

微软Zlatko Michailov 说,

  

app.config不在exe所在的二进制目录中。请做   以下内容:

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

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

  4.         

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

         

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

         

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

         

    如果你正在做一个   在ASP.NET项目中,可以使用“〜”表示项目根目录。在   在后一种情况下,您无法在项目之外引用模型   等级虽然。

了解更多信息Check Here

更新1:

您可以尝试以下步骤

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

    enter image description here

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

  3. 重新创建,如下所示(示例一)。别忘了勾选“将web.config中的实体保存设置保存为:” < / p>

  4. enter image description here

    最后一步:然后转到 web.config文件并检查您的连接字符串完全相同在“实体连接字符串:”上面的步骤(我在图像上方的红色标记处显示)。

    我希望这会对你有所帮助。