Visual Studioエンティティ・デザイナ
Visual Studioエンティティ・デザイナ(エンティティ・デザイナ)では、エンティティ・モデルを作成または変更できます。Oracle Developer Tools for Visual Studioをインストールすると、このデザイナはOracle Databaseに接続して、既存のOracleスキーマ・オブジェクトに基づいてエンティティを作成できます。
または、デザイナでエンティティを設計できます。その後、デザイナでこの設計に基づいてOracleスキーマ・オブジェクトを作成するSQLスクリプトを生成できます。
Oracleストアド・プロシージャまたはファンクションは、コードからの明示的なコールのためにエンティティ・ファンクションにマップすることも、エンティティに対するINSERT、UPDATEおよびDELETE操作でマップ(および自動的にコール)することもできます。
この項の内容は次のとおりです。
Oracle Databaseからのエンティティ・データ・モデルの更新
Oracle Databaseからエンティティ・データ・モデルを更新できます。
Oracle Databaseから既存のエンティティ・データ・モデルを更新するには、次の手順を実行します:
エンティティ・モデルからのOracle Database作成スクリプトの生成
エンティティ・データ・モデルからOracle Database作成スクリプトを生成するには、それぞれがエンティティをデータベース表にマップする方法を決定する2つの方法のいずれかを使用します:
-
タイプごとの表: タイプごとの表を使用すると、各エンティティは独自のデータベース表にマップされます。
-
階層ごとの表: 階層ごとの表を使用すると、エンティティとその導出タイプが単一のデータベース表にマップされます。このデータベース表には、エンティティとその導出タイプのすべての使用可能なプロパティの列が含まれています。データベース表には、各行、エンティティのタイプを示す識別子列も含まれています。
Oracle Database作成スクリプトを生成するには、次を実行します:
ノート:
Oracle Databaseリリース12.1以降では、エンティティ・デザイナ設定オプション・ページで、「Set maximum size for extended datatype columns to 32767」オプションを有効にできます。生成されたDDLでは、拡張タイプに最大サイズ32767が使用されます。「Generate IDENTITY column(s)」オプションを有効にすることもできます。これにより、生成されたDDLで順序とトリガーの組合せではなくIDENTITY列が使用されます。
「Add Import Function」ダイアログを使用したOracleストアド・プロシージャのインポート
「Add Function Import」ダイアログを使用して、エンティティ・ファンクションをOracleストアド・プロシージャにマップできます。
Oracleストアド・プロシージャをエンティティ・モデルにマップするには、次のステップを実行します:
-
Oracle Databaseからエンティティ・モデルを生成または更新します。
-
以前に接続していない場合は、Oracle Databaseへの接続を選択します。
-
「Choose Your Database Objects」ウィンドウで、ストアド・プロシージャまたはファンクション(あるいはその両方)を選択します。
ノート:
スカラー、複合型、エンティティなどの戻り値を持つエンティティ・ファンクション・インポートを追加するには、
REFCURSOROUTまたはINOUTパラメータを含むOracleストアド・プロシージャを選択する必要があります。次に、REFCURSORがエンティティ・ファンクションの戻り値にマップされます。Oracleストアド・プロシージャまたはファンクションが複数のREFCURSORを返す場合、インポート・ファンクションの戻り値として使用されるのは1つのみです。REFCURSORを含まないが、OUTまたはINOUTパラメータを持つOracleストアド・プロシージャまたはファンクションをインポートすることもできます。その場合、インポートされたエンティティ・ファンクションには戻り値がなく、出力パラメータにバインドしてデータを取得できます。 -
戻り値を持つファンクション・インポート(
REFCURSORを含むOracleストアド・プロシージャなど)を追加するには、Visual Studioプロジェクトのapp.configまたはweb.configファイルでREFCURSORメタデータ情報を構成します。このメタデータ情報は、次のように自動的に生成できます:
-
サーバー・エクスプローラで、ストアド・プロシージャまたはストアド・ファンクションを含むOracle Databaseに接続します。接続ダイアログ・ボックスの説明に従って、Entity Frameworkアプリケーションが使用するODP.NETタイプ(管理対象ODP.NETまたは管理対象外ODP.NET)のデータ・ソースとして接続してください。これは、自動生成されたメタデータ情報の形式が2つのタイプのODP.NETで異なるために必要です。
-
サーバー・エクスプローラのツリー・コントロールを、メタデータ情報を生成するストアド・プロシージャまたはファンクション・ノードに移動します。
-
ストアド・プロシージャまたはファンクション・ノードを右クリックし、メニューから「Run」をクリックします。
-
入力パラメータがある場合は、ストアド・プロシージャの実行ダイアログ・ボックスに値または値のセットを入力します。
結果ウィンドウがストアド・プロシージャの実行ダイアログ・ボックスに表示されます。
-
「Add Import Function」ダイアログを使用して、複合型のコレクションを返すインポート・ファンクションを作成する場合は、「Select for Config」チェック・ボックスをすべて選択します。エンティティまたはスカラーのコレクションを返すインポート・ファンクションでは、これは必須ではありません。
-
「Add Config to Project」ボタンをクリックして、
app.configまたはweb.configにメタデータ情報を追加します。
ノート:
REF CURSORメタデータ情報の構成の詳細は、『Oracle Data Provider for .NET開発者ガイド』の暗黙的なREF CURSORバインディングのサポートを参照してください。 -
-
モデル・ブラウザの「Store」で、「Stored Procedures」ノードをクリックし、Oracleストアド・プロシージャの名前を右クリックします。メニューから、「Add」、「Function Import」の順に選択します。
「Add Function Import」ダイアログが表示されます。
-
「Returns a Collection of」オプションのいずれかを選択します。「Complex」を選択した場合は、「Get Column Information」を選択できます。これにより、
app.configまたはweb.configを読み取って、戻り値を含むREFCURSORに関するメタデータ情報を取得します。ノート:
複合型にマップされた戻り値は、Oracleストアド・ファンクションではサポートされていません。エラー「
FunctionImportscannotbecreatedforcomposablefunctions」が発生します。これを回避するには、ラッパーOracleストアド・プロシージャを作成することを検討してください。app.configまたはweb.configメタデータ情報が正しくない場合、「Get Column Information」が選択されても列情報は表示されません。configファイルを修正する必要があります。 -
列情報が表示されたら、「Create New Complex Type」を選択します。
-
「OK」を選択して、ファンクション・インポートを概念モデルに追加します。



