MVC 5项目中的Entity Framework 6.0无法正常工作

时间:2015-02-27 21:31:54

标签: c# asp.net-mvc entity-framework entity-framework-6

我目前的设置:

VS1013溶液

  • MvcProject(MVC5)
  • FrameworkProject(ClassLibrary) - BaseController,BaseViewModel,ets。
  • EntitiesProject(ClassLibrary) - edmx仅作为.cs文件
  • EntitiesProjectIO(ClassLibrary) - 用于获取基础数据库中的获取/设置数据的InBetweenLayer

我在'MvcProject'中添加了对'EntitiesProjectIO'的引用,并调用了'GetData(...)'。

  

指定的架构无效。错误:\ r \ nSurgeryManagementEntities.ssdl(2,2):错误0152:找不到具有不变名称“System.Data.SqlClient”的ADO.NET提供程序的实体框架提供程序。确保提供程序已在应用程序配置文件的“entityFramework”部分中注册。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882

是我收到的消息,我现在知道***正在发生什么。 我已经添加了几乎每个已知程序集的引用,从仅DB项目(EntitiesProject)复制文件。 还复制了EntityFramework.dll,尝试了NuGet用于引用DB-Library的prject ...编辑了web.config,App.config,whatever.config。仍然是同样的错误

更新

这是VS2013内创建的全新项目/解决方案。因此,我没有升级问题或其他问题。只是一个干净的新解决方案...

1 个答案:

答案 0 :(得分:3)

您的前端配置文件必须具有如下注册的提供程序:

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, 
        EntityFramework.SqlServer" />
    </providers>
  </entityFramework>

在您添加Entity Framework 6到nuget之后应该已经修改了应用程序配置(它应该还添加了对程序集EntityFramework.dll和EntityFramework.SqlServer.dll的引用), 您可以通过在程序包管理器控制台中发出“Install-Package EntityFramework -Version 6.0.0”来实现。 (请注意有更新的版本,请参阅https://www.nuget.org/packages/EntityFramework)。

之后,您只需要重建解决方案(这样app app就会被复制到项目的输出文件夹中,EDMX设计师会在那里寻找它。)

您的项目还需要以.NET 4或.NET 4.5为目标,以使用EF6。