.edmx ファイルの概要 (Entity Framework)
.edmx ファイルは、概念モデル、ストレージ モデル、およびこれらのモデルの間のマッピングを定義する XML ファイルです。 また、.edmx ファイルには、ADO.NET Entity Data Model デザイナー (エンティティ デザイナー) がモデルをグラフィカルに表示するために使用する情報も含まれています。 .edmx ファイルを作成するには、Entity Data Model ウィザードの使用をお勧めします。 詳細については、「方法: 新しい .edmx ファイルを作成する (Entity Data Model ツール)」を参照してください。
エンティティ デザイナーを使用してモデルを変更する場合と、基になるデータベースへの変更に従ってモデルの更新ウィザードを使用してモデルを更新する場合、.edmx ファイルが変更されます。 詳細については、「モデルの更新ウィザード (Entity Data Model ツール)」を参照してください。 また、.edmx ファイルの手動変更が必要になる場合もあります。 詳細については、「.edmx ファイルの手動編集 (Entity Framework)」を参照してください。
既定では、.edmx ファイルはエンティティ デザイナーで開きますが、 以下の 3 つの手順に従うと、.edmx ファイルを XML エディターで開くことができます。
Visual Studio でプロジェクトが開いていることを確認します。
ソリューション エクスプローラーで、.edmx ファイルを右クリックし、[プログラムから開く] をクリックします。
[XML エディター] をクリックして [OK] をクリックします。
.edmx ファイルのコンテンツ
以下に、.edmx ファイルのコンテンツの概要を示します。 詳細については、Visual Studio XML ディレクトリにある .edmx スキーマを参照してください。
注 : |
---|
.NET Framework バージョン 4 を対象とするアプリケーションのスキーマは、Microsoft.Data.Entity.Design.Edmx_2.xsd ファイルで定義されます。.NET Framework バージョン 3.5 SP1 を対象とするアプリケーションのスキーマは、Microsoft.Data.Entity.Design.Edmx_1.xsd ファイルで定義されます。 |
ランタイム コンテンツ (edmx:Runtime)
このセクションには、Entity Framework アプリケーションのモデル ファイルとマッピング ファイルの生成に使用される情報が含まれています。 詳細については、下の「.edmx ファイル プロパティ」セクションの「Build Action」を参照してください。
注 : |
---|
.edmx ファイルは、ADO.NET Data Services サービスを参照するアプリケーションに自動的に追加されます。この場合、.edmx ファイルには edmx:Runtime ノードではなく、edmx:DataServices ノードが含まれます。詳細については、「ADO.NET Data Services Framework」を参照してください。 |
ストレージ モデル コンテンツ (edmx:StorageModels): このセクションは、ターゲット データベース スキーマについて説明し、ストレージ スキーマ定義言語 (SSDL) で記述されています。 詳細については、「SSDL Specification」および「EntityContainer Element (SSDL)」を参照してください。
概念モデル コンテンツ (edmx:ConceptualModels): このセクションは、アプリケーション ドメインのエンティティ型、複合型、アソシエーション、エンティティ コンテナー、エンティティ セット、およびアソシエーション セットを定義しています。 このセクションは、概念ストレージ定義言語 (CSDL) で記述されています。 詳細については、「CSDL Specification」および「EntityContainer Element (CSDL)」を参照してください。
マッピング コンテンツ (edmx:Mappings): このセクションは、概念モデルとターゲット データベースの間のマッピングについて説明し、マッピング仕様言語 (MSL) で記述されています。 詳細については、「MSL Specification」を参照してください。
デザイナー コンテンツ (edmx:Designer)
このセクションには、エンティティ デザイナーが概念モデルをグラフィカルに表示して、概念モデルやデザイン時プロパティを定義するために使用する情報が含まれています。
注 : |
---|
.edmx ファイルは、ADO.NET Data Services サービスを参照するアプリケーションに自動的に追加されます。この場合、.edmx ファイルに edmx:Designer ノードは含まれず、エンティティ デザイナーで表示できません。詳細については、「ADO.NET Data Services Framework」を参照してください。 |
接続コンテンツ (edmx:Connection): このセクションは、接続文字列に影響する概念モデルのプロパティについて説明しています。 現在、このセクションで設定可能なプロパティは MetadataArtifactProcessing プロパティのみです。 詳細については、「Connection Strings」を参照してください。
オプション コンテンツ (edmx:Options): このセクションは概念モデルのオプションのプロパティについて説明しています。 現在、ValidateOnBuild プロパティのみがここで設定されます。
ダイアグラム (edmx:Diagrams): このセクションには、エンティティ デザイナーが概念モデルをグラフィカルに表示するために使用する情報が含まれています。
概念モデルのプロパティ
概念モデルのプロパティは .edmx ファイルで定義されます。 次に、Visual Studio [プロパティ] ウィンドウに表示される概念モデルのプロパティについて説明します。
注 : |
---|
概念モデルのプロパティは .edmx ファイル自体のプロパティとは異なります。詳細については、以下の「.edmx File Properties」セクションを参照してください。 |
- Code Generation Strategy
選択したモデルの既定のオブジェクトレイヤー コード生成を有効または無効にします。 値が [なし] であれば、既定のコード生成を無効にします。 値が [既定] であれば、既定のコード生成を有効にします。 カスタム テキスト テンプレートを追加してオブジェクトレイヤー コードを生成する場合は、値を [なし] に設定します。 詳細については、「生成されるコードの概要 (Entity Data Model デザイナー)」および「方法: オブジェクトレイヤーのコード生成をカスタマイズする (Entity Data Model デザイナー)」を参照してください。
- Connection String
エンティティ クライアント接続文字列。 表示される接続文字列は、プロジェクトの App.config または Web.Config ファイルから取得され、エンティティ コンテナーと同じ名前が付きます。 詳細については、「Connection Strings」を参照してください。
- Database Generation Workflow
[モデルからのデータベース生成] を選択しているときに実行されるワークフロー。 詳細については、「方法: 概念モデルからデータベースを生成する (Entity Data Model ツール)」および「方法: データベースの生成をカスタマイズする (データベース生成ウィザード)」を参照してください。
- Database Schema Name
概念モデルからデータベースを作成するときに生成されるデータベースのスキーマ名。
- DDL Generation Template
データベース生成ワークフローの一部としてデータベース スクリプトを生成するために使用されるテキスト テンプレート。 詳細については、「方法: 概念モデルからデータベースを生成する (Entity Data Model ツール)」および「方法: データベースの生成をカスタマイズする (データベース生成ウィザード)」を参照してください。
- Entity Container Access
生成されたオブジェクト コンテキスト クラスがパブリック クラスか内部クラスかを制御します。
- Entity Container Name
概念モデルのエンティティ コンテナーの名前。 詳細については、「EntityContainer Element (CSDL)」を参照してください。
- Lazy Loading Enabled
生成されたオブジェクト コンテキスト クラスの LazyLoadingEnabled プロパティが true か false かを制御します。 詳細については、「生成されるコードの概要 (Entity Data Model デザイナー)」を参照してください。
- Metadata Artifact Processing
モデル ファイルとマッピング ファイル (.csdl、.ssdl、および .msl ファイル) を出力アセンブリに埋め込むか、出力ディレクトリにコピーするかを制御します。
- Namespace
概念モデルの名前空間。 詳細については、「Schema Element (CSDL)」を参照してください。
- Pluralize New Objects
新しいエンティティ セット名とナビゲーション プロパティ名を複数化するかどうかを制御します。
- Transform Related Text Templates On Save
テキスト テンプレートは、.edmx ファイル名をテキスト テンプレートに挿入して、.edmx ファイルに関連付けます。 詳細については、「方法: オブジェクトレイヤーのコード生成をカスタマイズする (Entity Data Model デザイナー)」を参照してください。 [Transform Related Text Templates On Save] プロパティを True に設定すると、.edmx ファイルを保存するときに .edmx ファイルに関連するすべてのテキスト テンプレートが処理されます。 このプロパティを False に設定すると、関連するテキスト テンプレートは処理されません。
- Validate On Build
プロジェクトのビルド時にモデルを検証するかどうかを制御します。
.edmx ファイルのプロパティ
[Build Action]、[Custom Tool]、および [Custom Tool Namespace] プロパティは .edmx ファイルのプロパティです。 .edmx ファイルの [Copy to Output Directory] および [File Name] プロパティの詳細については、Visual Studio ドキュメントの「ファイルのプロパティ」を参照してください。
注 : |
---|
[Copy to Output Directory] ファイル プロパティは、モデル ファイルとマッピング ファイルを出力ディレクトリにコピーするように指定するときには使用しません。この場合は、代わりに概念モデルの [Metadata Artifact Processing] プロパティを使用してください。 |
.edmx ファイルのプロパティを Visual Studio で表示して編集するには、次の手順を実行します。
.edmx ファイルを含むプロジェクトを Visual Studio で開きます。
ソリューション エクスプローラーで、.edmx ファイルを右クリックし、[プロパティ] をクリックします。
ファイルのプロパティが [プロパティ] ウィンドウに表示されます。
次に、.edmx ファイルの [Build Action]、[Custom Tool]、および [Custom Tool Namespace] プロパティについて説明します。
- Build Action
このプロパティを EntityDeploy (既定値) に設定すると、ビルドの実行時に、概念モデル ファイル (.csdl)、ストレージ モデル ファイル (.ssdl)、およびマッピング ファイル (.msl) という 3 つのファイルが .edmx ファイルから作成されます。 これらのファイルは、モデルの [Metadata Artifact Processing] プロパティの値に応じて、リソースとして埋め込まれるか、出力ディレクトリにコピーされます。 詳細については、「方法: 概念モデルのプロパティを編集する (Entity Data Model ツール)」を参照してください。 [Build Action] プロパティの他の値については、「ファイルのプロパティ」を参照してください。
- Custom Tool
このプロパティを EntityModelCodeGenerator (既定値) に設定し、[コード生成方法] を [既定] に設定すると、.edmx ファイルで定義されている概念モデルから生成されたクラスを含むソース コード ファイルが作成されます。 詳細については、「生成されるコードの概要 (Entity Data Model デザイナー)」を参照してください。
- Custom Tool Namespace
既定では、このプロパティは空です。 値を指定すると、その値は [Custom Tool] プロパティで指定されているツールで生成されたコードの名前空間として使用されます。 詳細については、「生成されるコードの概要 (Entity Data Model デザイナー)」を参照してください。
参照
概念
生成されるコードの概要 (Entity Data Model デザイナー)