Entity Data Model (EDM) は、格納されているフォームに関係なく、データの構造を記述する概念のセットです。 EDM は、1976 年に Peter Chen によって記述された Entity-Relationship モデルから借用されますが、Entity-Relationship モデルに基づいて構築され、従来の用途も拡張されています。
EDM は、データを多くの形式で格納することによる課題に対処します。 たとえば、リレーショナル データベース、テキスト ファイル、XML ファイル、スプレッドシート、レポートにデータを格納するビジネスを考えてみましょう。 これは、データ モデリング、アプリケーション設計、データ アクセスにおいて大きな課題となります。 データ指向アプリケーションを設計する際の課題は、効率的なデータ アクセス、ストレージ、スケーラビリティを犠牲にすることなく、効率的で保守しやすいコードを記述することです。 データにリレーショナル構造がある場合、データ アクセス、ストレージ、スケーラビリティは非常に効率的ですが、効率的で保守可能なコードの記述がより困難になります。 データにオブジェクト構造がある場合、トレードオフは逆になります。効率的で保守しやすいコードを記述すると、効率的なデータ アクセス、ストレージ、スケーラビリティが犠牲になります。 これらのトレードオフの間の適切なバランスが見つかった場合でも、データをある形式から別の形式に移動すると、新しい課題が発生します。 Entity Data Model は、ストレージ スキーマに依存しないエンティティとリレーションシップの観点からデータの構造を記述することで、これらの課題に対処します。 これにより、格納された形式のデータは、アプリケーションの設計と開発とは無関係になります。 また、エンティティとリレーションシップは、(格納されたフォームではなく) アプリケーションで使用されるデータの構造を記述するため、アプリケーションが進化するにつれて進化する可能性があります。
conceptual model
は、エンティティとリレーションシップとしてのデータ構造の特定の表現であり、一般に、EDM の概念を実装するドメイン固有言語 (DSL) で定義されます。
概念スキーマ定義言語 (CSDL) は、このようなドメイン固有言語の例です。 概念モデルで説明されているエンティティとリレーションシップは、アプリケーション内のオブジェクトと関連付けの抽象化と考えることができます。 これにより、開発者はストレージ スキーマを気にせずに概念モデルに集中でき、効率と保守性を考慮してコードを記述できます。 一方、ストレージ スキーマ デザイナーは、データ アクセス、ストレージ、スケーラビリティの効率に重点を置くことができます。
このセクションにて
このセクションのトピックでは、エンティティ データ モデルの概念について説明します。 EDM を実装する DSL には、ここで説明する概念が含まれている必要があります。 ADO.NET Entity Framework では CSDL を使用して概念モデルを定義します。 詳細については、 CSDL 仕様を参照してください。