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

5
我正在尝试在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>

然而,当我尝试调用我的EF上下文时,出现以下错误:
“应用程序配置文件中注册的ADO.NET提供程序的实体框架提供程序类型'Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices,Oracle.ManagedDataAccess.EntityFramework,Version = 6.121.1.0,Culture = neutral,PublicKeyToken = 89b483f429c47342'的不变名称为'Oracle.ManagedDataAccess.EntityFramework'无法加载。确保使用程序集限定名称,并且该程序集可供运行的应用程序使用。”
我花了很多时间搜索帮助。非常感谢任何帮助!
谢谢!
马丁

我已经删除了对Nuget包的引用,并将DLL直接复制到我的应用程序的bin文件夹中,并在那里设置了对它们的引用。现在应用程序抛出以下错误:“无法找到所请求的.Net Framework数据提供程序。可能未安装。”(在我的看来,DLL已经安装了!我可以在引用中看到它,并且在对象浏览器中显示) - Martin
2个回答

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>

3
如果有人需要帮助,我无法通过在连接字符串中指定TNSNAMES.ORA中的TNS名称来连接Oracle数据库。我需要将以下内容粘贴到连接字符串中:<add name="MyName" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyDB))); User Id=MyUser;Password=MyPassword;" providerName="Oracle.ManagedDataAccess.Client" /> - Martin

2

可能是您的框架问题。请右键单击项目 -> 属性,检查是否为4.5版本。

然后右键单击 Refrences -> 管理 NuGet 包..进入 nuget.org 并在搜索框中输入"Official Oracle ODP.NET",安装 Official Oracle ODP.NET、Managed Entity Framework 和 Oracle Data Provider for .Net x84/x64。

谢谢!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接