Visual Studioエンティティ・デザイナ

Visual Studioエンティティ・デザイナ(エンティティ・デザイナ)では、エンティティ・モデルを作成または変更できます。Oracle Developer Tools for Visual Studioをインストールすると、このデザイナはOracle Databaseに接続して、既存のOracleスキーマ・オブジェクトに基づいてエンティティを作成できます。

または、デザイナでエンティティを設計できます。その後、デザイナでこの設計に基づいてOracleスキーマ・オブジェクトを作成するSQLスクリプトを生成できます。

Oracleストアド・プロシージャまたはファンクションは、コードからの明示的なコールのためにエンティティ・ファンクションにマップすることも、エンティティに対するINSERTUPDATEおよびDELETE操作でマップ(および自動的にコール)することもできます。

この項の内容は次のとおりです。

Oracle Databaseからのエンティティ・モデルの生成

Oracle Databaseからエンティティ・モデルを生成するには、次のステップに従います:

  1. C# Windows Formsプロジェクトなどのプロジェクトを作成します。
  2. ソリューション・エクスプローラでプロジェクトを強調表示し、右クリックして「Add」を選択し、「New Item」を選択して新しい項目をプロジェクトに追加します。
  3. 「ADO.NET Entity Data Model」を選択し、「Add」をクリックします。

    エンティティ・デザイナが表示されます。

  4. 「Generate from database」を選択し、「Next」をクリックします。
  5. Oracle Databaseへの接続を選択します。
  6. エンティティ・モデルで必要なデータベース・オブジェクトを選択します。

    必要に応じてチェック・ボックスを選択し、モデルのネームスペースを指定します。「Next」をクリックします

    エンティティ・データ・モデルがデザイナに表示されます。

Oracle Databaseからのエンティティ・データ・モデルの更新

Oracle Databaseからエンティティ・データ・モデルを更新できます。

Oracle Databaseから既存のエンティティ・データ・モデルを更新するには、次の手順を実行します:

  1. エンティティ・デザイナを右クリックし、「Update Model from Database」を選択します。
  2. 以前に接続していない場合は、Oracle Databaseへの接続を選択します。
  3. エンティティ・モデルで必要なデータベース・オブジェクトを選択します。

エンティティ・モデルからのOracle Database作成スクリプトの生成

エンティティ・データ・モデルからOracle Database作成スクリプトを生成するには、それぞれがエンティティをデータベース表にマップする方法を決定する2つの方法のいずれかを使用します:

  • タイプごとの表: タイプごとの表を使用すると、各エンティティは独自のデータベース表にマップされます。

  • 階層ごとの表: 階層ごとの表を使用すると、エンティティとその導出タイプが単一のデータベース表にマップされます。このデータベース表には、エンティティとその導出タイプのすべての使用可能なプロパティの列が含まれています。データベース表には、各行、エンティティのタイプを示す識別子列も含まれています。

Oracle Database作成スクリプトを生成するには、次を実行します:

  1. エンティティ・データ・モデル・デザイナを開き、エンティティを表示します。
  2. 「Properties」ウィンドウで、ConceptualEntityModelに対して次のプロパティを設定します:
    • データベース生成ワークフローで、Oracleワークフローのいずれかを選択します:

      • タイプごとの表戦略では、「Generate Oracle Via T4 (TPT).xaml」を選択します。

      • 階層ごとの表では、「Generate Oracle Via T4 (TPH).xaml」を選択します

    • DDL生成テンプレートの場合は、OracleテンプレートSSDLToOracle.ttを選択します

    • 「Database Schema Name」に、Oracle Databaseのスキーマを指定します。

      ノート:

      スキーマ名は、大/小文字の区別があります。

  3. エンティティ・デザイナを右クリックします。

    「Generate Database from Model」を選択します。

    データベースの生成ウィザードが表示されます。

  4. Oracle Databaseへの接続を選択します。
  5. 「Summary and Settings」パネルでDDLをプレビューし、「Finish」をクリックしてSQLスクリプトを生成します。"DROP"などの破壊的なDDLコマンドの前のコメントを削除します。Visual Studioの「ツール」メニューを選択し、「Run SQL*Plus Script」ダイアログを起動して、SQLスクリプトを実行してデータベースを生成します。

ノート:

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ストアド・プロシージャをエンティティ・モデルにマップするには、次のステップを実行します:

  1. Oracle Databaseからエンティティ・モデルを生成または更新します。

  2. 以前に接続していない場合は、Oracle Databaseへの接続を選択します。

  3. 「Choose Your Database Objects」ウィンドウで、ストアド・プロシージャまたはファンクション(あるいはその両方)を選択します。

    ノート:

    スカラー、複合型、エンティティなどの戻り値を持つエンティティ・ファンクション・インポートを追加するには、REF CURSOR OUTまたはIN OUTパラメータを含むOracleストアド・プロシージャを選択する必要があります。次に、REFCURSORがエンティティ・ファンクションの戻り値にマップされます。Oracleストアド・プロシージャまたはファンクションが複数のREF CURSORを返す場合、インポート・ファンクションの戻り値として使用されるのは1つのみです。

    REF CURSORを含まないが、OUTまたはIN OUTパラメータを持つOracleストアド・プロシージャまたはファンクションをインポートすることもできます。その場合、インポートされたエンティティ・ファンクションには戻り値がなく、出力パラメータにバインドしてデータを取得できます。

  4. 戻り値を持つファンクション・インポート(REF CURSORを含むOracleストアド・プロシージャなど)を追加するには、Visual Studioプロジェクトのapp.configまたはweb.configファイルでREF CURSORメタデータ情報を構成します。

    このメタデータ情報は、次のように自動的に生成できます:

    1. サーバー・エクスプローラで、ストアド・プロシージャまたはストアド・ファンクションを含むOracle Databaseに接続します。接続ダイアログ・ボックスの説明に従って、Entity Frameworkアプリケーションが使用するODP.NETタイプ(管理対象ODP.NETまたは管理対象外ODP.NET)のデータ・ソースとして接続してください。これは、自動生成されたメタデータ情報の形式が2つのタイプのODP.NETで異なるために必要です。

    2. サーバー・エクスプローラのツリー・コントロールを、メタデータ情報を生成するストアド・プロシージャまたはファンクション・ノードに移動します。

    3. ストアド・プロシージャまたはファンクション・ノードを右クリックし、メニューから「Run」をクリックします。

    4. 入力パラメータがある場合は、ストアド・プロシージャの実行ダイアログ・ボックスに値または値のセットを入力します。

      結果ウィンドウがストアド・プロシージャの実行ダイアログ・ボックスに表示されます。

    5. 「Add Import Function」ダイアログを使用して、複合型のコレクションを返すインポート・ファンクションを作成する場合は、「Select for Config」チェック・ボックスをすべて選択します。エンティティまたはスカラーのコレクションを返すインポート・ファンクションでは、これは必須ではありません。

    6. 「Add Config to Project」ボタンをクリックして、app.configまたはweb.configにメタデータ情報を追加します。

    ノート: REF CURSORメタデータ情報の構成の詳細は、『Oracle Data Provider for .NET開発者ガイド』の暗黙的なREF CURSORバインディングのサポートを参照してください。

  5. モデル・ブラウザの「Store」で、「Stored Procedures」ノードをクリックし、Oracleストアド・プロシージャの名前を右クリックします。メニューから、「Add」「Function Import」の順に選択します。

    「Add Function Import」ダイアログが表示されます。

  6. 「Returns a Collection of」オプションのいずれかを選択します。「Complex」を選択した場合は、「Get Column Information」を選択できます。これにより、app.configまたはweb.configを読み取って、戻り値を含むREF CURSORに関するメタデータ情報を取得します。

    ノート:

    複合型にマップされた戻り値は、Oracleストアド・ファンクションではサポートされていません。エラー「Function Imports cannot be created for composable functions」が発生します。これを回避するには、ラッパーOracleストアド・プロシージャを作成することを検討してください。

    app.configまたはweb.configメタデータ情報が正しくない場合、「Get Column Information」が選択されても列情報は表示されません。configファイルを修正する必要があります。

  7. 列情報が表示されたら、「Create New Complex Type」を選択します。

  8. 「OK」を選択して、ファンクション・インポートを概念モデルに追加します。