.NET4.5.1
、MVC5
、EF6
、およびOracle.ManagedDataAccess 4.121.1.0
とOracle.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 developer
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に登録するにはどうすればよいですか?それともそうでない場合、セットアップの何が問題になっていますか?
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を開き、ソリューションをビルドします。エラーは生成されません。
理解した。
私の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" />
実行しました。
NuGetからODP.NET(Oracle.ManagedDataAccess.EntityFramework 12c)を追加することでこれを解決しました。 EF 6.2.0でVS2015を実行しています。
Visual Studio 2013(インストール済みのVSバージョン)ODTforVS2013_121025.exe用のOracle Developerツールをインストールして、このエラーを解決しました。