연결 집합은 같은 형식의 연결 인스턴스에 대한 논리적 컨테이너입니다. 연결 집합은 데이터 모델링 구문이 아니므로 데이터 또는 관계의 구조를 설명하지 않습니다. 대신 연결 집합은 연결 인스턴스를 그룹화하여 데이터 저장소에 매핑할 수 있도록 호스팅 또는 저장소 환경(예: 공용 언어 런타임 또는 SQL Server 데이터베이스)에 대한 구문을 제공합니다.
연결 집합은 엔터티 집합 및 연결 집합의 논리적 그룹인 엔터티 컨테이너 내에서 정의됩니다.
연결 집합 정의에는 다음 정보가 들어 있습니다.
연결 집합 이름 (필수적 요소)
연결 집합에 인스턴스가 포함될 연결 (필수적 요소)
두 개의 연결 집합 End
예제
다음 다이어그램에서는 두 연결 PublishedBy 및 WrittenBy의 개념적 모델을 보여 줍니다. 연결 집합에 대한 정보는 다이어그램에 표시되지 않지만 다음 다이어그램에서는 이 모델을 기반으로 하여 연결 집합 및 엔터티 집합의 예제를 보여 줍니다.
다음 예제에서는 위에 표시된 개념적 모델을 기반으로 하여 연결 집합(PublishedBy) 및 엔터티 집합 두 개(Books 및 Publishers)를 보여 줍니다. Books 엔터티 집합에 있는 Bi는 런타임 시 Book 엔터티 형식의 인스턴스를 나타냅니다. 마찬가지로 Pj는 Publishers 엔터티 집합의 Publisher 인스턴스를 나타냅니다. BiPj는 PublishedBy 연결 집합의 PublishedBy 연결 인스턴스를 나타냅니다.
ADO.NET Entity Framework는 CSDL(개념 스키마 정의 언어)이라는 DSL(Domain-Specific Language)을 사용하여 개념적 모델을 정의합니다. 다음 CSDL에서는 위의 다이어그램에 있는 각 연결에 대한 하나의 연결 집합을 사용하여 엔터티 컨테이너를 정의합니다. 각 연결 집합의 이름과 연결은 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>
두 연결 집합이 연결 집합 End를 공유하지만 않으면 연결당 연결 집합을 여러 개 정의할 수 있습니다. 다음 CSDL에서는 WrittenBy 연결에 대한 두 개의 연결 집합이 있는 엔터티 컨테이너를 정의합니다. Book 및 Author 엔터티 형식에 대해 엔터티 집합이 여러 개 정의되었으며 어떤 연결 집합도 연결 집합 End를 공유하지 않습니다.
<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" />
<EntitySet Name="FictionAuthors" 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>
<AssociationSet Name="FictionWrittenBy" Association="BooksModel.WrittenBy">
<End Role="Book" EntitySet="FictionBooks" />
<End Role="Author" EntitySet="FictionAuthors" />
</AssociationSet>
</EntityContainer>