2.12 Entity Framework Code First用の構成
Oracle Entity Frameworkの機能を利用するには、開発時にアプリケーションの構成が必要です。そのためには、app.config
またはweb.config
ファイルに2つのエントリを作成し、アセンブリ参照を追加します。
-
.NET構成ファイルへのエントリの追加
-
接続文字列
Database FirstまたはModel Firstパスで使用されているEntity Framework接続文字列ではなく、標準のADO.NET接続文字列を使用します。接続文字列名は、アプリケーションのコンテキスト名に一致する必要があります。接続文字列のエントリは、構成ファイルの
connectionStrings
セクションの要素です。 -
プロバイダ登録
Entity Frameworkはプロバイダ登録を使用して、Oracle Entity Frameworkの機能に利用するアセンブリを決定します。プロバイダ登録は、アプリケーション構成ファイルの
entityFramework
にあるproviders
セクションの要素です。
-
-
アセンブリ参照の追加
Oracle Entity Frameworkアセンブリをプロジェクト参照に追加します。
注意:
ODP.NET公式のNuGetインストールを使用する場合、これらの先行するセクションが存在しなければ自動的に作成されます。NuGetインストール後、アプリケーションの固有設定に応じてODP.NET接続文字列をカスタマイズする必要があります。
Oracle Universal Installerまたはxcopyインストールを使用する場合、先行するセクションは手動で構成する必要があります。
接続文字列の例は次のとおりです。
-
ODP.NET管理対象外ドライバ
<add name="TestContext" providerName="Oracle.DataAccess.Client" connectionString="User Id=test;Password=testpassword;Data Source=eftest" />
-
ODP.NET管理対象ドライバ
<add name="TestContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=test;Password=testpassword;Data Source=eftest" />
Oracleプロバイダ登録の例は次のとおりです。
-
ODP.NET管理対象外ドライバ
<provider invariantName="Oracle.DataAccess.Client" type="Oracle.DataAccess.EntityFramework.EFOracleProviderServices, Oracle.DataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
-
ODP.NET管理対象ドライバ
<provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
2.12.1 Entity Framework 6コード・ベース登録
Entity Framework 6では、構成ファイルを使用することなくアプリケーションがEntity Frameworkプロバイダを登録できます。ODP.NET管理対象ドライバでは、コードは次のようになります。
// C# using Oracle.ManagedDataAccess.EntityFramework; ... public class ModelConfiguration : DbConfiguration { public ModelConfiguration() { SetProviderServices("Oracle.ManagedDataAccess.Client", EFOracleProviderServices.Instance); } }
ODP.NET管理対象外ドライバでは、ManagedDataAccess
が出現するたびに前述のコードのDataAccess
に置き換えます。
コード・ベースの登録を使用している場合、構成ファイルに登録を含めないでください。構成ファイル・ベースの登録はコード・ベースの登録をオーバーライドします。