Entity Framework およびその他のプラットフォーム

多くのアプリケーションは、リレーショナル データベースを広範に利用します。開発者は、アプリケーション コードをストレージ構造に接続するデータ モデルを必要とします。

エンティティ データ モデル (EDM) は、各種のストレージ モデルのアプリケーション シナリオをサポートし、CLR およびデータベース管理システム (たとえば SQL Server) の両方にマップします。CLR へのマッピングはプログラミング上必要であり、リレーショナル データベースへのマッピングは永続性を確保するために必要です。EDM の導入により、ADO.NET は、プログラミング可能な型をストレージにマッピングするための包括的なプラットフォームを提供します。

少なくとも次の 4 つの既存のプラットフォームは、新しいデータ モデルに使用できます。

  • SQL Server

  • 共通言語ランタイム (CLR)

  • Unified Modeling Language (UML)

  • XML スキーマ定義 (XSD) 言語

既存のプラットフォームでデータ アプリケーションのすべての要件を満たしているものはありません。

  • SQL Server の場合、プログラミング言語との統合が容易ではありません。テキストベースのクエリは、コードで扱うのが煩雑になります。データベース テーブルでは、外部キーを使用してリレーションシップがモデル化されます。しかし SQL では、厳密な包含をモデル化できません。

  • CLR の場合、リレーションシップをモデル化するのに必要な制約がありません。

  • UML は抽象的すぎます。データ型や永続性が実装されません。

  • XSD 仕様は、CLR およびリレーショナル データベース モデルの両方へのマッピングに対応する中立的な形式を提供するプログラミング言語クラスおよびデータベース スキーマと大きく異なります。

EDM による CLR およびデータベース管理システムへのマッピング

EDM は、CLR とリレーショナル データベースの両方へのマッピングに対応します。CLR により、開発者は、慣れたコーディング形式でデータを使用できます。コード内のデータ型は、リレーショナル データベースにマップされます。これは、データの永続性を確保するための実証済みの標準です。

スキーマ、プログラミング言語、およびデータベース テーブル間のマッピングを実装するために、EDM では、リレーショナル データベース管理システムのエンジニアリングを利用した、ストアに依存しないビュー メカニズムが使用されます。従来のアプリケーションでは、データの表示および更新のために既にデータベース ビューを使用していますが、ビューを作成する際には、テーブルの結合や投影を含む複雑な SQL 構文がよく必要になります。EDM によるスキーマとストレージのマッピングでは、ADO.NET データ プロバイダを介して、コード内のオブジェクトをデータベースに接続します。

EDM データ サービスは、特定のストレージ スキーマに依存しません。複数のデータ ソースを必要とするアプリケーションは、データ ソースごとに個々のマッピングを保持できます。

開発プラットフォーム

EDM では、実装の各フェーズでアプリケーションのデザインがサポートされます。EDM では、多くの既存の有用な構造がサポートされ、そのデザインには、適切に定義されたデータ モデリング システム (リレーショナル データベース モデル、エンティティリレーションシップ モデル、共通言語ランタイム (CLR) など) の概念が組み込まれています。

EDM は、複雑なアプリケーションの機能をモデル化し、プログラム可能なオブジェクトとデータベース ストレージとの間の意味的な関係を宣言の形式でキャプチャします。

EDM では、リレーショナル データベース モデルの機能に強固な型指定、エンティティレベルの識別、参照、およびリレーションシップを追加して拡張されています。

EDM 仕様は広範なので、EDM 仕様のサブセットを使用できます。たとえば、アプリケーションまたはフレームワークでは、エンティティ、アソシエーション、および参照を使用できますが、継承は使用できません。

EDM は、次の 2 つの原則に従って拡張できます。

  • 新しい型、および既存の型に対する拡張は、継承を使用して定義できます。アプリケーションは、スキーマの境界を越えて型の間のリレーションシップを定義できます。

  • EDM 上で構築された既存のデータに対する拡張は、その拡張を使用しない機能には影響を与えません。

アプリケーション間およびフレームワーク間共有は、EDM に従ってアプリケーション データ モデルを定義することで実現できます。1 つのアプリケーションに対して定義された名前空間は、EDM に従って構築されたもう 1 つのアプリケーションから使用することができます。

クエリ モデルは、関係代数に基づいて閉じられるように設計されます。これは、EDM の概念に関係演算子を適用すると EDM にも含まれている結果が返されることを意味します。

EDM と CLR を統合することで、汎用的なデータ セマンティックをキャプチャできます。EDM の型システムは、プログラミング言語の宣言を基になるストレージ構造のデータにマップします。

EDM のエンティティは、使用されている永続性の実装に論理的に依存しません。データ モデルは特定のマッピングまたは実装を示すものではなく、エンティティを各種の物理的データ ソースにマップすることができます。EDM は、SQL Server データ定義言語 (DDL) を包含したり置き換えたりするものではありません。

デザイン ステージ

EDM 仕様を使用したデータ モデルをデザインおよび実装するには、開発に際して 3 つの準備段階が必要です。このプロセスの各段階でどのようなことを行うかについて順に説明します。

  • アプリケーション ドメインにおけるエンティティとリレーションシップを XML ファイルで指定します。

  • アプリケーション データが格納されるデータベースの構造を記述したメタデータを、2 つ目の XML ファイルで指定します。

  • 1 つ目のスキーマのエンティティとリレーションシップを、メタデータ ファイル内の対応するデータベース構造にマップします。

最初のスキーマは、開発の概念段階を表します。ここでは、概念スキーマ定義言語 (CSDL) と呼ばれる XML 構文を使用して、エンティティおよびリレーションシップを定義します。この種類のファイルの拡張子は .csdl です。CSDL 構文の詳細については、「スキーマ (EDM)」を参照してください。

ストレージ メタデータ スキーマでは、ストア スキーマ定義言語 (SSDL) が使用されます。

概念スキーマをストレージ メタデータにマッピングするには、マッピング スキーマ言語 (MSL) と呼ばれる 3 番目の XML 構文を使用します。エンティティとリレーションシップのマッピングおよび EDM スキーマの種類については、「スキーマおよびマッピング スキーマ (Entity Framework)」を参照してください。

CSDL スキーマは、アプリケーション コードによって使用されるプログラム可能なオブジェクト モデルを生成するために使用します。共通言語ランタイム (CLR) をサポートする言語は、ビルド プロセスによって作成されたオブジェクト モデルを使用できます。アプリケーション コードの例については、「サンプル アプリケーション (Entity Framework)」を参照してください。

参照

概念

エンティティの実装 (EDM)
アソシエーションの実装 (EDM)

その他のリソース

EDM 仕様
サンプル アプリケーション (Entity Framework)