web-dev-qa-db-ja.com

ADO.NETプロバイダー「Oracle.ManagedDataAccess.Client」がマシンまたはアプリケーションの構成ファイルに登録されていないか、ロードできませんでした

.NET4.5.1MVC5EF6、およびOracle.ManagedDataAccess 4.121.1.0Oracle.ManagedDataAccess.EntityFramework 6.121.2.0を使用しています

既存のデータベースからモデルを生成することができました(その一部はテーブルごとに追加されます)。アプリケーションは問題なくビルドされます。

ただし、データを取得できるかどうかを確認するためにテストクエリを実行しようとすると

 public ActionResult Cancellations()
    {
        var factoryClasses = System.Data.Common.DbProviderFactories.GetFactoryClasses();
        using (var db = new Entities())
        {
            var cancelationStatuses = new[] {3, 7, 9};
           var result = db.TRANSACTIONDETAIL.Where(o => cancelationStatuses.Contains(o.TRANSACTIONSTATUSID));
           return View(result);
        }
    }

var result = ...で失敗します(Unable to find the requested .Net Framework Data Provider. It may not be installed.で)

探しているときDbProviderFactories確かにコレクションには何もありません(var factoryClasses =)。

ただし、 12c 4(ODTwithODAC121024)をインストールしています および11g(ODTwithODAC1120320_32bit)を使用し、マシンを再起動しました。

データベースは11gで実行されており、PL/SQL developerenter image description here

Web.configは次のようになります。

<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 -->
 <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
 <section name="Oracle.ManagedDataAccess.Client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>
.....
<connectionStrings>
.....
<add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=Oracle_user;Password=Oracle_user_password;Data Source=Oracle" />
 <add name="Entities" connectionString="metadata=res://*/OracleDb.csdl|res://*/OracleDb.ssdl|res://*/OracleDb.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string='data source=******" providerName="System.Data.EntityClient" />           </connectionStrings>
......
<system.data>
<DbProviderFactories>
  <!-- Remove in case this is already defined in machine.config -->
  <add name="Oracle Data Provider for .NET" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  <remove invariant="Oracle.ManagedDataAccess.Client" />
  <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.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>

OracleがDbProviderFactoriesまたはどこかに登録されていないために失敗していると思う

OracleをDbProviderFactoriesに登録するにはどうすればよいですか?それともそうでない場合、セットアップの何が問題になっていますか?

8

Visual Studio 2017を更新したときにこのエラーが発生しました。VS2017のODTを再インストールすると、エラーを解決できます。

1)Visual Studioを閉じます。

2)Visual Studio 2017用の既存のOracle Developer Toolsをコントロールパネルからアンインストールします。

3)次のリンクから最新のもの(ODTforVS2017_122011.exe)をインストールします。

http://www.Oracle.com/technetwork/topics/dotnet/downloads/odacmsidownloadvs2017-3806459.html

4)Visual Studioを開き、ソリューションをビルドします。エラーは生成されません。

7
ReadOnly

理解した。

私のmachine.configすでにあった

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

そして、それは私のweb.configこれは、静かにプロバイダの提供に失敗します。だから取り出した後:

  <add name="Oracle Data Provider for .NET" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  <remove invariant="Oracle.ManagedDataAccess.Client" />
  <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.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />

実行しました。

6

NuGetからODP.NET(Oracle.ManagedDataAccess.EntityFramework 12c)を追加することでこれを解決しました。 EF 6.2.0でVS2015を実行しています。

3
kmxr

Visual Studio 2013(インストール済みのVSバージョン)ODTforVS2013_121025.exe用のOracle Developerツールをインストールして、このエラーを解決しました。

2
Nitin Patil