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

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


当前回答

你应该强制一个对EntityFramework.SqlServer.dll程序集的静态引用,但是你可以用一种更漂亮的方式来做到这一点,而不是放置一个虚拟代码:

If you already have a DbConfiguration class: public class MyConfiguration : DbConfiguration { public MyConfiguration() { this.SetProviderServices(System.Data.Entity.SqlServer.SqlProviderServices.ProviderInvariantName, System.Data.Entity.SqlServer.SqlProviderServices.Instance); } } If you don't have a DbConfiguration class you must put the following code at app startup (before EF is used): static MyContext() { DbConfiguration.Loaded += (sender, e) => e.ReplaceService<DbProviderServices>((s, k) => System.Data.Entity.SqlServer.SqlProviderServices.Instance); }

其他回答

而不是添加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/

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

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

另外,确保你的启动项目是包含dbcontext(或相关的app.config)的项目。我的是试图启动一个网站项目,没有所有必要的配置设置。

正如消息显示,我们需要添加提供商System.Data.SqlClient,这就是为什么我们需要安装EntityFramework的nuget包,它有两个dll,但如果我们只开发控制台应用程序,那么我们只需要添加EntityFramework. sqlserver .dll的引用