次の方法で共有


エンティティ セット (Entity Data Model)

エンティティ セットは、エンティティ型のインスタンスと、そのエンティティ型から派生するあらゆる型のインスタンスの論理コンテナーです (派生型の詳細については、「Entity Data Model: 継承」を参照してください)。エンティティ型とエンティティ セットの関係は、リレーショナル データベースの行とテーブルの関係に似ており、エンティティ型は行のようにデータ構造を表し、エンティティ セットにはテーブルのように構造のインスタンスが格納されます。 エンティティ セットは、データ モデリング構造ではなく、データ構造を表しません。 エンティティ セットは、エンティティ型のインスタンスをグループ化してデータ ストアにマップするための、ホスト環境またはストレージ環境 (共通言語ランタイムや SQL Server データベースなど) の構造を提供します。

エンティティ セットは、エンティティ セットとアソシエーション セットの論理グループであるエンティティ コンテナー内に定義します。

エンティティ型のインスタンスがエンティティ セット内に存在できるようにするには、次の条件を満たしている必要があります。

  • インスタンスの型がエンティティ セットの基本になるエンティティ型と同じであるか、インスタンスの型がエンティティ型のサブタイプであること。

  • インスタンスのエンティティ キーがエンティティ セット内で一意であること。

  • インスタンスが他のエンティティ セットに存在しないこと。

    Ee382830.note(ja-jp,VS.100).gif注 :
    同じエンティティ型を使用して複数のエンティティ セットを定義できますが、特定のエンティティ型のインスタンスは、1 つのエンティティ セット内のみに存在できます。

概念モデルの各エンティティ型にはエンティティ セットを定義する必要がありません。

下のダイアグラムは、BookPublisher、および Author という 3 つのエンティティ型の概念モデルを示しています。

モデル例

次のダイアグラムには、上の概念モデルに基づく 2 つのエンティティ セット (Books および Publishers) と、アソシエーション セット(PublishedBy) を示しています。 Books エンティティ セットの Bi は、実行時の Book エンティティ型のインスタンスを表します。 同様に、Pj は、Publishers エンティティ セットの Publisher インスタンスを表します。 BiPj は、PublishedBy アソシエーション セットの PublishedBy アソシエーションのインスタンスを表します。

例の設定

ADO.NET Entity Framework では、概念スキーマ定義言語 (CSDL) と呼ばれるドメイン固有言語 (DSL) を使用して概念モデルを定義します。 次の CSDL は、上の概念モデルに示された各エンティティ型に対して 1 つのエンティティ セットを持つエンティティ コンテナーを定義しています。 各エンティティ セットの名前とエンティティ型は、XML 属性で定義されています。

<EntityContainer Name="BooksContainer" >
  <EntitySet Name="Books" EntityType="BooksModel.Book" />
  <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
  <EntitySet Name="Authors" EntityType="BooksModel.Author" />
  <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
    <End Role="Book" EntitySet="Books" />
    <End Role="Publisher" EntitySet="Publishers" />
  </AssociationSet>
  <AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
    <End Role="Book" EntitySet="Books" />
    <End Role="Author" EntitySet="Authors" />
  </AssociationSet>
</EntityContainer>

型ごとに複数のエンティティ セット (Multiple-Entity-Sets-per-Type: MEST) を定義できます 次の CSDL は、Book エンティティ型のエンティティ セットを 2 つ持つエンティティ コンテナーを定義しています。

<EntityContainer Name="BooksContainer" >
  <EntitySet Name="Books" EntityType="BooksModel.Book" />
  <EntitySet Name="FictionBooks" EntityType="BooksModel.Book" />
  <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
  <EntitySet Name="Authors" EntityType="BooksModel.Author" />
  <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
    <End Role="Book" EntitySet="Books" />
    <End Role="Publisher" EntitySet="Publishers" />
  </AssociationSet>
  <AssociationSet Name="BookAuthor" Association="BooksModel.BookAuthor">
    <End Role="Book" EntitySet="Books" />
    <End Role="Author" EntitySet="Authors" />
  </AssociationSet>
</EntityContainer>

参照

概念

Entity Data Model キーの概念
Entity Data Model