エンティティフレームワーク-データモデル
エンティティデータモデル(EDM)は、さまざまなモデリング手法を使用してデータの概念モデルを指定するエンティティリレーションシップモデルの拡張バージョンです。また、格納されている形式に関係なく、データ構造を説明する一連の概念も指します。
EDMは、概念モデルのプロパティを定義する一連のプリミティブデータ型をサポートします。Entity Frameworkの基礎を形成する3つのコア部分を検討する必要があり、まとめてEntity DataModelと呼ばれます。以下はEDMの3つのコア部分です。
- ストレージスキーマモデル
- 概念モデル
- マッピングモデル
ストレージスキーマモデル
ストレージスキーマ定義レイヤー(SSDL)とも呼ばれるストレージモデルは、バックエンドデータストアのスケマティック表現を表します。
概念モデル
概念スキーマ定義レイヤー(CSDL)とも呼ばれる概念モデルは、クエリを作成するための実際のエンティティモデルです。
マッピングモデル
マッピングレイヤーは、概念モデルとストレージモデルの間の単なるマッピングです。
論理スキーマとその物理スキーマとのマッピングは、EDMとして表されます。
Visual Studioは、EDMとマッピング仕様を視覚的に作成するためのエンティティデザイナも提供します。
ツールの出力は、スキーマとマッピングを指定するXMLファイル(* .edmx)です。
Edmxファイルには、EntityFrameworkメタデータアーティファクトが含まれています。
スキーマ定義言語
ADO.NET Entity Frameworkは、スキーマ定義言語(SDL)と呼ばれるXMLベースのデータ定義言語を使用してEDMスキーマを定義します。
SDLは、String、Int32、Double、Decimal、DateTimeなど、他のプリミティブ型と同様の単純型を定義します。
プリミティブ値と名前のマップを定義する列挙型も、単純な型と見なされます。
列挙は、フレームワークバージョン5.0以降でのみサポートされます。
複合型は、他の型の集合から作成されます。これらのタイプのプロパティのコレクションは、エンティティタイプを定義します。
データモデルには、主にデータ構造を説明するための3つの重要な概念があります。
- エンティティタイプ
- アソシエーションタイプ
- Property
エンティティタイプ
エンティティタイプは、EDMのデータ構造を記述するための基本的な構成要素です。
概念モデルでは、エンティティタイプはプロパティから構築され、ビジネスアプリケーションの学生や登録などのトップレベルの概念の構造を記述します。
エンティティは、特定の学生や登録などの特定のオブジェクトを表します。
各エンティティには、エンティティセット内に一意のエンティティキーが必要です。エンティティセットは、特定のエンティティタイプのインスタンスのコレクションです。エンティティセット(および関連付けセット)は、エンティティコンテナに論理的にグループ化されます。
継承はエンティティタイプでサポートされています。つまり、あるエンティティタイプを別のエンティティタイプから派生させることができます。
アソシエーションタイプ
これは、EDMで関係を記述するためのもう1つの基本的な構成要素です。概念モデルでは、関連付けは、StudentとEnrollmentなどの2つのエンティティタイプ間の関係を表します。
すべてのアソシエーションには、アソシエーションに関係するエンティティタイプを指定する2つのアソシエーションエンドがあります。
各アソシエーションエンドは、アソシエーションのそのエンドに存在できるエンティティの数を示すアソシエーションエンドの多重度も指定します。
アソシエーション終了多重度は、1、0、1(0..1)、または多数(*)の値を持つことができます。
アソシエーションの一方の端にあるエンティティには、ナビゲーションプロパティを介して、またはエンティティタイプで公開されている場合は外部キーを介してアクセスできます。
プロパティ
エンティティタイプには、その構造と特性を定義するプロパティが含まれています。たとえば、Studentエンティティタイプには、Student Id、Nameなどのプロパティが含まれる場合があります。
プロパティには、プリミティブデータ(文字列、整数、ブール値など)または構造化データ(複合型など)を含めることができます。