方法: オブジェクトレイヤーのコード生成をカスタマイズする (Entity Data Model デザイナー)

このトピックでは、ADO.NET Entity Data Model デザイナー (エンティティ デザイナー) とテキスト テンプレートを使用して、オブジェクト コンテキストとエンティティ クラス (オブジェクトレイヤー コード) の生成をカスタマイズする方法を説明します。

既定では、エンティティ デザイナーは EntityModelCodeGenerator カスタム ツールを使用してオブジェクトレイヤー コードを生成します (詳細については、「生成されるコードの概要 (Entity Data Model デザイナー)」を参照してください)。 プロジェクトにテキスト テンプレートを追加すると、既定のカスタム ツールではなく、そのテンプレートを使用してオブジェクトレイヤー コードが生成されます。

Dd456821.note(ja-jp,VS.100).gif注 :
テキスト テンプレートを使用してオブジェクトレイヤー コードを生成するには、コマンドライン ツールを使用します。詳細については、「テキスト テンプレート用コマンドライン ツール (英語)」を参照してください。

Visual Studio には、Entity Framework オブジェクトレイヤー コードを生成する 2 種類の ADO.NET テンプレートとして、ADO.NET EntityObject ジェネレーターおよび ADO.NET Self-Tracking Entity Generator が用意されています。 ADO.NET EntityObject ジェネレーターは、EntityModelCodeGenerator カスタム ツールと同じコードを生成します。 ADO.NET Self-Tracking Entity Generator テンプレートは、自己追跡状態ロジックを含むエンティティ クラスを生成します。 N 層アプリケーションを使用する際は、自己追跡エンティティを使用します。 ADO.NET テンプレートの詳細については、「ADO.NET EntityObject ジェネレーター テンプレート」および「ADO.NET Self-Tracking Entity Generator テンプレート」を参照してください。

以下の手順では次のことを前提としています。

  • .NET Framework 4 を対象とする Visual Basic または C# プロジェクトが Visual Studio 2010 で開いている。

  • エンティティ デザイナーで .edmx ファイルが開いている。

  • テキスト テンプレートのカスタマイズに精通している。 テキスト テンプレートについては、「成果物の生成」を参照してください。

オブジェクトレイヤー コードの生成をカスタマイズするには

  1. エンティティ デザイナー画面で空の領域を右クリックし、[コード生成項目の追加] をポイントして、使用できるテンプレートを選択します。 使用できるテンプレートが表示されない場合、[インストールされたテンプレート] ペインの [コード] を選択します。

    コード生成項目により、プロジェクトに 1 つ以上のテキスト テンプレート (.tt) ファイルが追加されます。 テキスト テンプレートは、オブジェクトレイヤー コードを生成します。 生成されたファイルは、.tt ファイルの下に追加されます。 このテンプレートを変更しなければ、生成されるコードは、エンティティ デザイナーで生成されるコードと同じです。

    テキスト プレートをプロジェクトに追加すると、Visual Studio で次の処理が行われます。

    • 概念モデルの [コード生成方法] プロパティを [なし] に設定します。 これによって既定のコード生成がオフになります。

    • .edmx ファイルと同じディレクトリにあるプロジェクトに新しいテキスト テンプレート ファイルを追加する。

    • テキスト テンプレートに対する .edmx ファイルの相対パスをテキスト テンプレートに挿入する。 これにより、テキスト テンプレートで正しい .edmx ファイルが処理されます。

    • テキスト テンプレートを使用して .edmx ファイルに基づいてコードを生成する。 生成されたコードは <text_template_name>.cs ファイルか <text_template_name>.vb ファイルに書き込まれます。 ファイルはソリューション エクスプローラーでテンプレート ファイルの依存ファイルとして追加されます。

  2. テキスト テンプレートを開いて編集します。

  3. 編集したテキスト テンプレート ファイルを保存します。

    テキスト テンプレート ファイルを保存すると、編集後のテキスト テンプレート ファイルに従ってオブジェクトレイヤー コードが再生成されます。

既定では、.edmx ファイルを保存すると、.edmx ファイルのオブジェクトレイヤー コードの生成が開始されます。 <text_template_name>.cs または <text_template_name>.vb コード ファイルに手動で行った変更は、保持されません。 .edmx ファイルに複数のテキスト テンプレート ファイルが関連付けられている場合は、.edmx ファイルを保存すると、関連付けられているコード ファイルがすべて再生成されます。 ただし、この動作は変更可能です。 概念モデルの [保存時に関連するテキスト テンプレートを変換する] プロパティを false に設定した場合、ファイルの保存時にコード ファイルは再生成されません。

モデルと .tt ファイルを別々のプロジェクトに分割した場合、.edmx ファイルまたは .tt ファイルを変更するたびに手動でコード生成を実行する必要があります。 これを行うには、ソリューション エクスプローラーの [すべてのテンプレートの変換] をクリックします。 「Walkthrough: Serialize Self-Tracking Entities」では、モデルと .tt ファイルを別々のプロジェクトに分割する方法について説明しています。

参照

概念

.edmx ファイルの概要 (Entity Framework)

その他のリソース

ADO.NET Entity Data Model ツール