デザイナー コード生成テンプレート

Entity Framework Designer を使用してモデルを作成するときには、クラスと派生コンテキストは自動的に生成されます。 既定のコードの生成に加えて、生成されるコードをカスタマイズするために使用できる多数のテンプレートも提供します。 これらのテンプレートは、T4 テキスト テンプレートとして提供され、必要な場合は、テンプレートをカスタマイズすることができます。

既定で生成されるコードは、モデルの作成に使用する Visual Studio のバージョンによって異なります。

  • Visual Studio 2012 と 2013 で作成されたモデルは、単純な POCO エンティティ クラスと、簡略化された DbContext から派生したコンテキストを生成します。
  • Visual Studio 2010 で作成されたモデルは、EntityObject から派生したエンティティ クラス、および ObjectContext から派生したコンテキストを生成します。

Note

モデルを追加したら、DbContext Generator テンプレートに切り替えることをお勧めします。

このページでは、使用可能なテンプレートについて説明し、モデルにテンプレートを追加する方法について説明します。

使用可能なテンプレート

Entity Framework チームによって次のテンプレートが提供されます。

DbContext ジェネレーター

このテンプレートは、単純な POCO エンティティ クラスと、EF6 を使用して DbContext から派生したコンテキストを生成します。 これは、以下に示すその他のテンプレートのいずれかを使用する理由がない限り、推奨されるテンプレートです。 これは、最近のバージョンの Visual Studio (Visual Studio 2013 以降) を使用している場合に既定で取得するコード生成テンプレートでもあります。新しいモデルを作成するときに、このテンプレートが既定で使用され、T4 ファイル (.tt) は、.edmx ファイルの下に入れ子になります。

旧バージョンの Visual Studio

  • Visual Studio 2012:EF 6.x DbContextGenerator テンプレートを取得するには、最新バージョンの Entity Framework Tools for Visual Studio をインストールする必要があります。詳細については、Entity Framework の取得に関するページを参照してください。
  • Visual Studio 2010:EF 6.x DbContextGenerator テンプレートは Visual Studio 2010 では使用できません。

EF 5.x DbContext ジェネレーター

古いバージョンの EntityFramework NuGet パッケージ (メジャー バージョン 5 のパッケージ) を使用している場合、EF 5.x DbContext ジェネレーター テンプレートを使用する必要があります。

Visual Studio 2013 または 2012 を使用している場合は、このテンプレートが既にインストールされています。

Visual Studio 2010 を使用している場合は、Visual Studio ギャラリーからテンプレートをダウンロードしてテンプレートを追加するときに、[オンライン] タブを選択する必要があります。 または、テンプレートを事前に Visual Studio ギャラリーから直接インストールできます。 以降のバージョンの Visual Studio にはテンプレートが含まれているため、ギャラリーのバージョンは Visual Studio 2010 でのみインストールできます。

EF 4.x DbContext ジェネレーター

古いバージョンの EntityFramework NuGet パッケージ (メジャー バージョン 4 のパッケージ) を使用している場合、EF 4.x DbContext ジェネレーター テンプレートを使用する必要があります。 これは、テンプレートをスイカするときに [オンライン] タブで確認できます。または事前に Visual Studio ギャラリーから直接テンプレートをインストールすることができます。

EntityObject ジェネレーター

このテンプレートは、EntityObject から派生したエンティティ クラス、および ObjectContext から派生したコンテキストを生成します。

Note

DbContext ジェネレーターの使用を検討してください。

DbContext ジェネレーターは、新しいアプリケーションの推奨されるテンプレートになりました。 DbContext ジェネレーターは、より単純な DbContext API を利用します。 既存のアプリケーションをサポートするために EntityObject ジェネレーターを引き続き使用できます。

Visual Studio 2010、2012、2013

Visual Studio ギャラリーからテンプレートをダウンロードしてテンプレートを追加するときに、[オンライン] タブを選択する必要があります。 または、テンプレートを事前に Visual Studio ギャラリーから直接インストールできます。

EF 5.x EntityObject ジェネレーター

Visual Studio 2012 または 2013 を使用している場合は、Visual Studio ギャラリーからテンプレートをダウンロードしてテンプレートを追加するときに、[オンライン] タブを選択する必要があります。 または、テンプレートを事前に Visual Studio ギャラリーから直接インストールできます。 テンプレートは Visual Studio 2010 に含まれているため、ギャラリー上のバージョンをインストールできるのは Visual Studio 2012 と 2013 だけです。

ObjectContext コードの生成のみが必要で、テンプレートを編集する必要がない場合、EntityObject コードの生成を元に戻すことができます。

Visual Studio 2010 を使用している場合は、このテンプレートが既にインストールされています。 Visual Studio 2010 で新しいモデルを作成する場合、このテンプレートは、既定で使用されますが、.tt ファイルがプロジェクトに含まれていません。 テンプレートをカスタマイズする場合は、これをプロジェクトに追加する必要があります。

自己追跡エンティティ (STE) ジェネレーター

このテンプレートは、自己追跡エンティティ クラスと、ObjectContext から派生したコンテキストを生成します。 EF アプリケーションでは、エンティティの変更はコンテキストによって追跡されます。 ただし、n 層シナリオでは、エンティティを変更する層でコンテキストを利用できない場合があります。 自己追跡エンティティでは、任意の層での変更を追跡するのに役立ちます。 詳細については、「自己追跡エンティティ」を参照してください。

Note

STE テンプレートはお勧めしません

新しいアプリケーションでの STE のテンプレートの使用は推奨されませんが、既存のアプリケーションをサポートするために引き続き使用できます。 n 層シナリオで推奨されるその他のオプションについては、切り離されたエンティティの記事を参照してください。

Note

STE テンプレートの EF 6.x バージョンはありません。

Note

STE テンプレートの Visual Studio 2013 バージョンはありません。

Visual Studio 2012

Visual Studio 2012 を使用している場合は、Visual Studio ギャラリーからテンプレートをダウンロードしてテンプレートを追加するときに、[オンライン] タブを選択する必要があります。 または、テンプレートを事前に Visual Studio ギャラリーから直接インストールできます。 Visual Studio 2010 にはテンプレートが含まれているため、ギャラリーのバージョンは Visual Studio 2012 でのみインストールできます。

Visual Studio 2010**

Visual Studio 2010 を使用している場合は、このテンプレートが既にインストールされています。

POCO エンティティ ジェネレーター

このテンプレートは、POCO エンティティ クラスと、ObjectContext から派生したコンテキストを生成します。

Note

DbContext ジェネレーターの使用を検討してください。

DbContext ジェネレーターは、新しいアプリケーションで POCO クラスを生成するための推奨されるテンプレートになりました。 DbContext ジェネレーターは、新しい DbContext API を利用し、単純な POCO クラスを生成できます。 既存のアプリケーションをサポートするために POCO エンティティ ジェネレーターを引き続き使用できます。

Note

STE テンプレートの EF 5.x または EF 6.x バージョンはありません。

Note

POCO テンプレートの Visual Studio 2013 バージョンはありません。

Visual Studio 2012 と Visual Studio 2010

Visual Studio ギャラリーからテンプレートをダウンロードしてテンプレートを追加するときに、[オンライン] タブを選択する必要があります。 または、テンプレートを事前に Visual Studio ギャラリーから直接インストールできます。

"Web サイト" テンプレートとは

"Web サイト" テンプレート (たとえば EF 5.x DbContext Generator for C# Web サイト) は、[ファイル] -> [新規] -> [Web サイト] を選択して作成された Web サイト プロジェクトで使用されます。これらは、[ファイル] -> [新規] -> [プロジェクト] を選択して作成した標準のテンプレートを使用する Web アプリケーションとは異なります。 Visual Studio の項目テンプレートのシステムで必要なため、別々のテンプレートを提供しています。

テンプレートを使用する

コード生成テンプレートの使用を開始するには、EF Designer のデザイン画面で空いている場所を右クリックして [コード生成項目の追加] を選択します。

Add Code Gen Item

使用するテンプレートをインストールしてある場合 (または Visual Studio に含まれている場合)、左側のメニューの [コード] または [データ] セクションで使用できます。

Installed Template

まだテンプレートをインストールしていない場合は、左側のメニューから [オンライン] を選択し、目的のテンプレートを検索します。

Search Template 

Visual Studio 2012 を使用している場合は、新しい .tt ファイルが .edmx ファイルの下に入れ子になります。*

Note

Visual Studio 2012 で作成されたモデルでは、既定のコード生成で使用されるテンプレートを削除する必要がありますが、それ以外の場合、重複するクラスとコンテキストが生成されます。 既定のファイルは、<モデル名>.tt<モデル名>.context.tt です。 

VS2012 Templates

Visual Studio 2010 を使用している場合は、tt ファイルがプロジェクトに直接追加されます。  

VS2010 Templates