无法加载实体框架提供程序类型“Oracle.ManagedDataAccess.EntityFramework”

Mar*_*tin 5 asp.net-mvc entity-framework odp.net

我正在尝试在 MVC 应用程序中使用 Entity Framework v6 使用 Oracle Data Provider.NET (ODP.NET) 连接到 Oracle。

我从这里安装了 ODP.NET:https://www.nuget.org/packages/odp.net.entityframework/6.121.1-beta

我的 web.config 文件配置如下:

<connectionStrings>
    <add name="MyDB" connectionString="User ID=MyUser;Password=MyPassword;Data Source=MyDatabase; Persist Security Info=False" providerName="Oracle.ManagedDataAccess" />
</connectionStrings>



<entityFramework>
    <providers>
        <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </providers>
 </entityFramework>
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试调用 EF Context 时,出现以下错误:

实体框架提供程序类型“Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices、Oracle.ManagedDataAccess.EntityFramework、Version=6.121.1.0、Culture=neutral、PublicKeyToken=89b483f429c47342”在具有不变名称的 ADO.NET 提供程序的应用程序配置文件中注册无法加载 Oracle.ManagedDataAccess.EntityFramework'。确保使用程序集限定名称并且该程序集可供运行的应用程序使用

我花了很多时间寻求这方面的帮助。将非常感谢任何帮助!

谢谢!

马丁

Mar*_*tin 2

将此部分添加到 web.config 以及上述步骤似乎已经解决了这个问题:

<system.data>

    <DbProviderFactories>

      <add name="ODP.NET, Managed Driver"
           invariant="Oracle.ManagedDataAccess.Client"
           description="Oracle Data Provider for .NET, Managed Driver"
           type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>

</system.data>
Run Code Online (Sandbox Code Playgroud)

  • 如果它对任何人有帮助,我无法通过在连接字符串中指定 TNSNAMES,ORA 中的 TNS 名称来连接到 Oracle。我将以下内容粘贴到连接字符串中: &lt;add name="MyName" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=1521)))( CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyDB)));用户 ID=MyUser;密码=MyPassword;" ProviderName =“Oracle.ManagedDataAccess.Client”/&gt; (3认同)