web-dev-qa-db-ja.com

OracleへのEntityFramework 6(5)接続

.netでOracleを使用する一連のアプリケーション用のデータアクセスライブラリを作成しようとしています。現在NHibernateを使用しており、十分にサポートされていないように見えるため、移行を検討しています。

私はVisualStudio 2013を使用しており、すでにOracleデータベースを構築しています。それを更新するための書き込みはありません(つまり、db guysのドメインです)。したがって、それは私たちの側の計算の一部にはなりません。

サーバー上のクライアントは32ビットであるため、ここではそれを使用します。すでにGACされており、変更する必要はありません。したがって、開発ボックスには32ビットクライアントがあります。

EntityFramework6.1.0をnuget経由でプロジェクトにインストールしています。プロジェクトにODAC1.112.3.20がインストールされています。アプリケーションの32ビットバージョン。また、ODP.net.x86ドライバーをインストールしています(これもnuget経由)。

問題は、ADO.netデータベース接続を作成しようとするたびに、Oracleプロバイダーがオプションにならないことです。何が足りないのですか?これを機能させるには何が必要ですか?

Oracleフォーラムを一度読んだところ、EntityFrameworkを6.0ではなく5.0に設定する必要があるとのことでした。どちらでも構いませんが、どうすればよいですか?

9
SoftwareSavant

EF 6のサポートは、ODAC12cリリース3ベータによって提供されるようになりました。

.Net Developerニュースレター(私の強調)から:

新しいダウンロード:ODAC 12cリリース3ベータ新しいODACベータには、Entity Framework 6、Code First、Code First Migrations、.NET Framework 4.5.2認定、マネージドODP.NET XML DB、マネージドODPが含まれます。 Oracle.ManagedDataAccessDTC.dllを使用しないNET分散トランザクションのサポート。

9
Robert H

これは少し古くなっていることは知っていますが、これはあなたの質問の最後の部分(EFv5のインストール方法)に答えるためのものです。 (VisualStudio 2013用に作成された手順)ソリューションを開いた状態で、[ツール]-> [NuGetパッケージマネージャー]-> [パッケージマネージャーコンソール]をクリックします。次のように入力します:

_Install-Package EntityFramework -Version 5.0.0_

編集

マシンをセットアップしてからしばらく経ちましたが、これが私がしなければならなかったことだと思います。それがお役に立てば幸いです。

セットアップ:

  1. Oracle Instant Client(またはOracleホームに対して行うこと)をインストールします。
  2. ODTwithODAC121012をインストールします(グーグルで検索すると表示されます)
  3. Tnsnames.oraがOracleホームに適した場所にあることを確認してください

新しいVisualStudioソリューションのセットアップ:

  1. 新しいソリューション(私にとっては、ASP.NET Webアプリケーションタイプ)
  2. 元の回答と同じようにコマンドを実行します
  3. クラスライブラリタイプの新しいプロジェクトを追加します(モデル/エンティティ用)
  4. 新しいプロジェクトで、タイプADO.NETエンティティデータモデルの新しいアイテムを追加します
  5. エンティティデータモデルウィザードの場合:
    1. データベースからのEFDesigner(既存のデータベースを使用している場合)
    2. 新しい接続
    3. データソースには、(うまくいけば)Oracleデータベースオプションがあります
    4. その下のデータプロバイダーでは、ODP.NETマネージドドライバーを選択しました
    5. ユーザー/パスを入力し、データソースを選択して接続に名前を付けます

編集2

ああ、私はそれが重要かどうかわからない、一つのことを忘れました。そのモデルプロジェクトの参照をOracleドライバに追加する必要がある場合があります。プロジェクトを右クリック->追加->参照->アセンブリ->「Oracle」を検索します。Oracle.ManagedDataAccessのエントリがあるといいのですが(私のバージョンは4.121.1.0でした)

いくつかの暴言:

  1. プロセスはそれほど難しいべきではないと思います
  2. 更新に時間がかかる理由もわかりません。 http://www.devart.com/ Oracle/Visual Studioの新しい変更を把握することは問題ないようです(料金はかかりますが、 しかし、オラクルもそうです
  3. 私の脳の陰謀の部分は、オラクルはあなたがそれを簡単にすることに興味がないと言っています ない 彼らの製品を使用するので、彼らは置きます 番号 それに努力する
  4. それらのデフォルトの番号マッピングは本当にあなたを台無しにする可能性があります。たとえば、OracleDBにNUMBER(10)型のフィールドがある場合、10桁の数値がすべて収まらない場合は、32ビット整数としてマップされます:(
  5. そのマッピングに関する詳細(リンクは、その32ビットの問題をオーバーライドする方法を示しています)については、以下を参照してください。 http://docs.Oracle.com/cd/E56485_01/win.121/e55744/InstallConfig.htm #ODPNT8167
8

EF6はODP.NETではまだサポートされていません。詳細については、リリースノート(README)を参照してください。 EF6はまもなくサポートされます。

編集:EF6がサポートされるようになりました。

4
Christian Shay

申し訳ありませんが、質問の一部を見逃しました。

Visual Studio 2013を使用している場合は、Oracle Developer Tools for VisualStudioバージョン12.1.0.1.2以降をダウンロードする必要があります。古いバージョンでは、VS2013と統合できません。

ダウンロード場所は次のとおりです。 http://www.Oracle.com/technetwork/topics/dotnet/utilsoft-086879.html

EF 6.0はまだサポートされていませんが、VS 2013ではEF5プロバイダーを使用できます。したがって、他の回答は実際には関係ありません。

1
Christian Shay

Entity Framework6コードファースト

ODAC 12c R3は、Entity Framework(EF)6およびEF CodeFirstで認定された最初のODP.NETリリースです。 EF Code Firstは、.NETオブジェクトリレーショナルマッピングの一般的な開発モデルです。開発者は、デザイナやXMLベースの構成ファイルではなく、ソースコードを使用してアプリケーションドメインモデルを定義します。 EF Code Firstモデルのクラスは、Plain Old CLR Objects(POCO)を介してコードで定義されます。

.。

これらの機能はすべて、マネージドとアンマネージドの両方のODP.NETで使用できます。

http://cshay.blogspot.com/2014/09/odac-12c-release-3-beta-now-available.html

0
Tom Halladay