Entity-framework-data-model

提供:Dev Guides
移動先:案内検索

エンティティフレームワーク-データモデル

エンティティデータモデル(EDM)は、エンティティリレーションシップモデルの拡張バージョンであり、さまざまなモデリング手法を使用してデータの概念モデルを指定します。 また、格納されている形式に関係なく、データ構造を説明する一連の概念も指します。

EDMは、概念モデルのプロパティを定義するプリミティブデータ型のセットをサポートしています。 Entity Frameworkの基礎を形成する3つのコアパーツを検討する必要があり、これらはまとめてEntity Data Modelとして知られています。 EDMの3つの主要部分は次のとおりです。

  • ストレージスキーマモデル
  • 概念モデル
  • マッピングモデル

ストレージスキーマモデル

ストレージスキーマ定義レイヤー(SSDL)とも呼ばれるストレージモデルは、バックエンドデータストアの概略図を表します。

EDM

概念モデル

概念スキーマ定義レイヤー(CSDL)とも呼ばれる概念モデルは、実際のエンティティモデルであり、これに対してクエリを記述します。

マッピングモデル

Mapping Layerは、概念モデルとストレージモデル間の単なるマッピングです。

論理スキーマと物理スキーマとのマッピングは、EDMとして表されます。

  • Visual Studioは、EDMおよびマッピング仕様の視覚的な作成のために、Entity Designerも提供します。
  • ツールの出力は、スキーマとマッピングを指定するXMLファイル(* .edmx)です。
  • Edmxファイルには、Entity Frameworkのメタデータアーティファクトが含まれています。

スキーマ定義言語

ADO.NET Entity Frameworkは、スキーマ定義言語(SDL)と呼ばれるXMLベースのデータ定義言語を使用して、EDMスキーマを定義します。

  • SDLは、特にString、Int32、Double、Decimal、DateTimeなど、他のプリミティブ型と同様の単純型を定義します。
  • プリミティブ値と名前のマップを定義する列挙も単純型と見なされます。
  • 列挙は、フレームワークバージョン5.0以降でのみサポートされます。
  • 複合型は、他の型の集合から作成されます。 これらのタイプのプロパティのコレクションは、エンティティタイプを定義します。

データモデルには、主にデータ構造を記述するための3つの重要な概念があります-

  • エンティティタイプ
  • 関連付けタイプ
  • 物件

エンティティタイプ

エンティティタイプは、EDMでデータの構造を記述するための基本的な構成要素です。

  • 概念モデルでは、エンティティタイプはプロパティから構築され、ビジネスアプリケーションの受講者や登録などのトップレベルの概念の構造を記述します。
  • エンティティは、特定の学生や登録などの特定のオブジェクトを表します。
  • 各エンティティには、エンティティセット内に一意のエンティティキーが必要です。 エンティティセットは、特定のエンティティタイプのインスタンスのコレクションです。 エンティティセット(および関連付けセット)は、エンティティコンテナに論理的にグループ化されます。
  • 継承はエンティティタイプでサポートされています。つまり、あるエンティティタイプを別のエンティティタイプから派生させることができます。

エンティティタイプ

関連付けタイプ

これは、EDMで関係を記述するためのもう1つの基本的な構成要素です。 概念モデルでは、関連付けは、StudentやEnrollmentなどの2つのエンティティタイプ間の関係を表します。

  • すべてのアソシエーションには、アソシエーションに関係するエンティティタイプを指定する2つのアソシエーションエンドがあります。
  • 各関連付けの終わりは、関連付けの終わりに存在できるエンティティの数を示す関連付けの終わりの多重度も指定します。
  • アソシエーションの終了の多重度は、1(1)、0または1(0..1)、または多数(*)の値を持つことができます。
  • 関連付けの一方のエンティティは、ナビゲーションプロパティを介して、またはエンティティタイプで公開されている場合は外部キーを介してアクセスできます。

物件

エンティティタイプには、構造と特性を定義するプロパティが含まれています。 たとえば、Studentエンティティタイプには、Student Id、Nameなどのプロパティがあります。

プロパティには、プリミティブデータ(文字列、整数、ブール値など)または構造化データ(複合型など)を含めることができます。