在通过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。
当前回答
我有同样的错误。奇怪的是,它只发生在我使用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