在通过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。
当前回答
大家注意,两个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"/>
您已经将EF添加到类库项目中。你还需要将它添加到引用它的项目(你的控制台应用程序,网站或任何东西)。
当错误发生在测试项目时,最漂亮的解决方案是用以下方式装饰测试类:
[DeploymentItem("EntityFramework.SqlServer.dll")]
当你通过Nuget安装实体框架6时。EntityFramework。SqlServer有时会错过另一个可执行文件。只需将Nuget包添加到该项目。
有时以上对测试项目不起作用
要在测试项目中解决这个问题,只需将这个方法放在测试项目中:
public void FixEfProviderServicesProblem()
{
var instance = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
}
这个方法从未被调用过,但根据我的观察,编译器将删除所有“不必要的”程序集,而不使用EntityFramework。SqlServer stuff测试失败。
您只是缺少了对EntityFramework.SqlServer.dll的引用。对于使用SQL Server的EntityFramework项目,需要引用的两个文件是EntityFramework. sqlserver .dll和EntityFramework.dll