实体框架错误:找不到具有不变名称的System.Data.SqlClient&

时间:2014-04-16 15:55:39

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

我有以下MVC项目结构:

BLL

DAL

CommonClasses

网络

我正在使用Entity Framework 6.0.2。 Web项目引用了BLL和CommonClasses项目。 BLL引用了DAL和CommonClasses。 BLL和DAL都引用了通过Nuget添加的EF 6.0.2。每当我的代码尝试对Entity Framework执行任何操作时,我都会收到以下错误:

  

没有为ADO.NET提供程序找到具有不变名称和System.Data.SqlClient'的实体框架提供程序。确保提供商已在' entityFramework'中注册。应用程序配置文件的一部分。

我对发生的事情感到有点迷茫。我已经检查过,在DAL和BLL项目中有对EntityFramework.SqlServer的引用。所有项目都有对System.Data的引用。

DAL和BLL proejcts中的app.config文件都有以下行:

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

2 个答案:

答案 0 :(得分:3)

确保EntityFramework.SqlServer.dll位于Web1的应用程序目录中(即bin文件夹中)。如果顶级可执行文件/网站没有直接依赖此文件,则不会复制它。

答案 1 :(得分:1)

请在此处查看我的答案,该答案引用了非常有用的博客。我必须做几个步骤来复制和加载该DLL。

Error: No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'