在通过nuget下载EF6并尝试运行我的项目后,它返回以下错误:
没有为ADO找到实体框架提供程序。NET提供程序,使用不变名称'System.Data.SqlClient'。确保提供者在应用程序配置文件的“entityFramework”部分中注册。更多信息请参见http://go.microsoft.com/fwlink/?LinkId=260882。
在通过nuget下载EF6并尝试运行我的项目后,它返回以下错误:
没有为ADO找到实体框架提供程序。NET提供程序,使用不变名称'System.Data.SqlClient'。确保提供者在应用程序配置文件的“entityFramework”部分中注册。更多信息请参见http://go.microsoft.com/fwlink/?LinkId=260882。
当前回答
引用实体框架所在项目的启动项目需要在bin文件夹中包含以下两个程序集:
EntityFramework.dll EntityFramework.SqlServer.dll
在启动项目的.config文件的<configSections>中添加<section>将使第一个程序集在该bin目录中可用。你可以从实体框架项目的.config文件中复制:
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
要使第二个.dll在bin文件夹中可用,尽管不实际,但可以从实体框架项目的bin文件夹中手动复制。 一个更好的选择是在实体框架项目的Post-Build Events中添加以下几行,这将使该过程自动化:
cd $(ProjectDir)
xcopy /y bin\Debug\EntityFramework.SqlServer.dll ..\{PATH_TO_THE_PROJECT_THAT_NEEDS_THE_DLL}\bin\Debug\
其他回答
我刚刚遇到了同样的问题,它看起来像EntityFramework,虽然从NuGet包管理器安装没有正确安装在项目中。
我设法通过在包管理器控制台运行以下命令来修复它:
PM> Install-Package EntityFramework
似乎没有人提到首先检查system . data . sqlclient是否安装在系统中,以及是否引用了它。
我通过安装System.Data.SqlClient并在app.Config中添加一个新的提供者来解决我的问题
<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6"/>
我有同样的错误。奇怪的是,它只发生在我使用dbContext查询我的任何模型或获得它的列表时:
var results = _dbContext.MyModel.ToList();
我们试图重新安装实体框架,正确引用它,但无济于事。
幸运的是,我们尝试检查Nuget的所有解决方案,然后更新所有内容或确保所有内容都是相同的版本,因为我们注意到两个项目在Web项目上有不同的EF版本。这很有效。错误消失了。
以下是关于如何管理所有解决方案的Nuget的截图:
我也有同样的问题(在我的3轮胎水平项目),我通过添加/安装EF到我的主项目来修复它。
我抛出了相同的异常。我包括
using System.Data;
using System.Data.Entity;
一切都恢复正常了。