在通过nuget下载EF6并尝试运行我的项目后,它返回以下错误:

没有为ADO找到实体框架提供程序。NET提供程序,使用不变名称'System.Data.SqlClient'。确保提供者在应用程序配置文件的“entityFramework”部分中注册。更多信息请参见http://go.microsoft.com/fwlink/?LinkId=260882。


当前回答

我有同样的错误。奇怪的是,它只发生在我使用dbContext查询我的任何模型或获得它的列表时:

var results = _dbContext.MyModel.ToList();

我们试图重新安装实体框架,正确引用它,但无济于事。

幸运的是,我们尝试检查Nuget的所有解决方案,然后更新所有内容或确保所有内容都是相同的版本,因为我们注意到两个项目在Web项目上有不同的EF版本。这很有效。错误消失了。

以下是关于如何管理所有解决方案的Nuget的截图:

其他回答

我也遇到过类似的问题。我的问题是通过以下方法解决的:

我有同样的错误。奇怪的是,它只发生在我使用dbContext查询我的任何模型或获得它的列表时:

var results = _dbContext.MyModel.ToList();

我们试图重新安装实体框架,正确引用它,但无济于事。

幸运的是,我们尝试检查Nuget的所有解决方案,然后更新所有内容或确保所有内容都是相同的版本,因为我们注意到两个项目在Web项目上有不同的EF版本。这很有效。错误消失了。

以下是关于如何管理所有解决方案的Nuget的截图:

大家注意,两个dll EntityFramework.dll和EntityFramework.SqlServer.dll是DataAccess层库,在视图或任何其他层中使用它们是不符合逻辑的。它能解决你的问题,但不符合逻辑。

逻辑的方法是删除实体属性并用Fluent API替换它们。这是实解

似乎没有人提到首先检查system . data . sqlclient是否安装在系统中,以及是否引用了它。

我通过安装System.Data.SqlClient并在app.Config中添加一个新的提供者来解决我的问题

<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6"/>

我刚刚遇到了同样的问题,它看起来像EntityFramework,虽然从NuGet包管理器安装没有正确安装在项目中。

我设法通过在包管理器控制台运行以下命令来修复它:

PM> Install-Package EntityFramework