'具有不变名称 'Devart.Data.Oracle' 的 ADO.NET 提供程序未在机器或应用程序配置文件中注册

'The ADO.NET provider with invariant name 'Devart.Data.Oracle' is either not registered in the machine or application config file

好的,已经有一个类似的。然而,它并不完全相同,我得到的解决方案不是从其他问题的解决方案中派生出来的。

这是我的 Web.Config 设置:

<connectionStrings>
  <add name="ADOEntities" connectionString="metadata=res://*/ADOModel.csdl|res://*/ADOModel.ssdl|res://*/ADOModel.msl;provider=Devart.Data.Oracle;provider connection string=&quot;User Id=dbUser;Password=*****;Server=oracleserver;Persist Security Info=True&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

一切运行良好在我的机器上(原文如此),但是当我试图在质量服务器上设置 ws 时,我在标题上遇到了错误。

我按照 ADO.NET link 中的步骤使它正常工作。特别是,

You need to remove the defaultConnectionFactory registration and to add the Entity Framework provider registration by registering it in the entityFramework section

所以行 defaultConnectionFactory 必须去

<entityFramework>
  <providers>
    <provider invariantName="Devart.Data.Oracle" type="Devart.Data.Oracle.Entity.OracleEntityProviderServices, Devart.Data.Oracle.Entity.EF6, Version=9.6.696.0, Culture=neutral, PublicKeyToken=09af7300eec23701" />
  </providers>
</entityFramework>

然后,添加 System.Data 部分。就我而言,它看起来像这样:

  <system.data>
    <DbProviderFactories>
      <remove invariant="Devart.Data.Oracle" />
      <add name="dotConnect for Oracle" invariant="Devart.Data.Oracle" description="Devart dotConnect for Oracle" type="Devart.Data.Oracle.OracleProviderFactory, Devart.Data.Oracle, Version=9.6.696.0, Culture=neutral, PublicKeyToken=09af7300eec23701" />
    </DbProviderFactories>
  </system.data>  

如果这仍然不能解决问题——对我来说也没有——尝试将以下行添加到您的上下文中 class:

[DbConfigurationType(typeof(Devart.Data.Oracle.Entity.OracleEntityProviderServicesConfiguration))] //Add this line
public partial class ADOEntities : DbContext

如果您正在使用 ADO、Devart 或其他 auto-generated 实体模型,您可能想要创建一个部分 class,以避免将这段代码放在 auto-generated class