【问题标题】:Common Entity Framework Project "No Entity Framework provider found for the ADO.NET provider"通用实体框架项目“未找到 ADO.NET 提供程序的实体框架提供程序”
【发布时间】:2014-12-10 15:22:45
【问题描述】:

所以我查看了有相同错误的条目,要么不是同一个问题,要么我不理解它。

我有几个项目的解决方案。他们使用常见的Entity Frame Work 6 并将其包含在参考文献中。 WCF 项目使用Entity Frame 从数据库中获取数据非常有效。但是我的控制台应用程序给了我,

没有为 ADO.NET 提供程序找到实体框架提供程序 不变名称'System.Data.SqlClient'

当执行调用Entity Framework的相同代码时。

我想我在.config 文件中遗漏了一些东西,但我的连接字符串都是一样的。

实体框架 App.Config:

<configuration>
  <connectionStrings>
    <add name="SafetyPortalEntities" connectionString="metadata=res://*/EntityModels.SafetyPortalModel.csdl|res://*/EntityModels.SafetyPortalModel.ssdl|res://*/EntityModels.SafetyPortalModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=ndmasdev;initial catalog=SafetyPortal;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>

WCF Web.config:

<configuration>
    <connectionStrings>
      <add name="SafetyPortalEntities" connectionString="metadata=res://*/EntityModels.SafetyPortalModel.csdl|res://*/EntityModels.SafetyPortalModel.ssdl|res://*/EntityModels.SafetyPortalModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=ndmasdev;initial catalog=SafetyPortal;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />
    </connectionStrings>
</configuration>

控制台 App.config:

<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="SafetyPortalEntities" connectionString="metadata=res://*/EntityModels.SafetyPortalModel.csdl|res://*/EntityModels.SafetyPortalModel.ssdl|res://*/EntityModels.SafetyPortalModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=ndmasdev;initial catalog=SafetyPortal;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>  
</configuration>

【问题讨论】:

  • 我认为 EF app.config 在运行时不使用。您是否尝试将 entityFramework 配置部分复制到您的控制台 app.config 中?
  • 是的,我尝试将 EF App.Config 中的 部分添加到控制台 App.Config 中,但它在尝试初始化 EF 对象时出现错误。 “'System.Data.Entity.Internal.AppConfig' 的类型初始化程序引发了异常。”如果我只是添加 它仍然会给出原始错误。

标签: c# .net entity-framework connection-string


【解决方案1】:

您可以使用包管理器控制台(工具->Nuget 包管理器->包管理器控制台)并将实体框架添加到控制台应用程序使用

install-package entityframework

请务必在包管理器控制台的默认项目下拉列表中选择控制台应用程序。

【讨论】:

    【解决方案2】:

    经过一番挫折后,我终于弄清楚出了什么问题。

    WCF 项目会自动在引用中包含对实体框架的引用,因此它工作正常。

    Console 应用程序没有 EF 引用,但在尝试添加新引用时,它不会显示在任何地方的选项列表中,并且包括其他项目不包括 EF 引用。 (我不知道为什么)所以我从 EF 项目的引用中选择了“EntityFramework”,复制了它的路径,然后在控制台项目引用中浏览添加了 EF 项目的路径。

    必须有更好的解决方案,如果你发布它,我会选择你的作为答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-26
      • 1970-01-01
      相关资源
      最近更新 更多