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

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


当前回答

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

其他回答

当你通过Nuget安装实体框架6时。EntityFramework。SqlServer有时会错过另一个可执行文件。只需将Nuget包添加到该项目。

有时以上对测试项目不起作用

要在测试项目中解决这个问题,只需将这个方法放在测试项目中:

public void FixEfProviderServicesProblem()
{
    var instance = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
}

这个方法从未被调用过,但根据我的观察,编译器将删除所有“不必要的”程序集,而不使用EntityFramework。SqlServer stuff测试失败。

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

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

注意:我在从模型生成数据库Sql时遇到了这个问题。它已经创建了所有的表,但是不能导出更改。您需要注意的是,当您尝试使用DDL生成模板将sql导出为SSDLtoSQL10时,会生成此错误。它期待MySQL连接在这里,所以确保你选择从下拉DDL生成模板SSDLtoMySQL的模型属性。花了一整天的时间!

我今天才遇到这个问题。我有数据存储库类库与EF63 NuGet包和控制台应用程序进行测试,其中只引用类库项目。我创建了一个非常简单的构建后命令,它将EntityFramework.SqlServer.dll从类库的Bin\Debug文件夹复制到控制台应用程序的Bin\Debug文件夹,问题就解决了。不要忘记将entityFramework部分添加到控制台应用程序的.config文件中。

在Azure上从CE db迁移到Sql Server时,我遇到了一个相关的问题。浪费了4个小时来解决这个问题。希望这能挽救一些有类似命运的人。对我来说,我的包中有一个对SqlCE的引用。配置文件。删除它解决了我的整个问题,并允许我使用迁移。太棒了,微软又推出了一项存在不必要的复杂设置和配置问题的技术。