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

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


当前回答

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

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

其他回答

而不是添加EntityFramework。您可以确保从模型/实体项目中对它进行静态引用,如下所示

static MyContext()
{
    var type = typeof(System.Data.Entity.SqlServer.SqlProviderServices);
    if(type == null)
        throw new Exception("Do not remove, ensures static reference to System.Data.Entity.SqlServer");
}

这将使构建过程将程序集与主机项目包括在一起。

更多信息在我的博客上 http://andersmalmgren.com/2014/08/20/implicit-dependencies-and-copy-local-fails-to-copy/

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

我刚刚用Nuget重新安装了实体框架。 按照下面链接上的说明操作: http://robsneuron.blogspot.in/2013/11/entity-framework-upgrade-to-6.html

我想问题会解决的。

YourModel扩张。然后打开YourModel.Context.tt下的YourModel.Context.cs类。

我在使用部分添加了以下一行,错误为我修复了。

使用 SqlProviderServices = System.Data.Entity.SqlServer.SqlProviderServices;

您可能必须在每次自动生成文件时将这一行添加到文件中。

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

var results = _dbContext.MyModel.ToList();

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

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

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