연결 집합은 동일한 형식의 연결 인스턴스에 대한 논리 컨테이너입니다. 연결 집합은 데이터 모델링 구문이 아닙니다. 즉, 데이터 또는 관계의 구조를 설명하지 않습니다. 대신 연결 집합은 호스팅 또는 스토리지 환경(예: 공용 언어 런타임 또는 SQL Server 데이터베이스)에 대한 구문을 제공하여 연결 인스턴스를 데이터 저장소에 매핑할 수 있도록 그룹화합니다.
연결 집합은 엔터티 집합 및 연결 집합의 논리적 그룹인 엔터티 컨테이너 내에서 정의됩니다.
연결 집합에 대한 정의에는 다음 정보가 포함됩니다.
연관 집합의 이름입니다. (필수)
인스턴스를 포함할 연결입니다. (필수)
예시
아래 다이어그램은 두 개의 연결이 있는 개념적 모델을 보여 줍니다. PublishedByWrittenBy 연결 집합에 대한 정보는 다이어그램에 전달되지 않지만 다음 다이어그램은 이 모델을 기반으로 하는 연결 집합 및 엔터티 집합의 예를 보여줍니다.
다음 예제에서는 위에 표시된 개념적 모델을 기반으로 연결 집합(PublishedBy) 및 두 엔터티 집합(Books 및 Publishers)을 보여 줍니다. 엔터티 집합의 Books Bi는 런타임에 엔터티 형식의 Book 인스턴스를 나타냅니다. 마찬가지로 Pj는 Publisher 인스턴스를 Publishers 엔터티 집합에서 표현합니다. BiPj는 PublishedBy 연관 집합에서 PublishedBy 연관의 인스턴스를 나타냅니다.
ADO.NET Entity Framework는 CSDL(개념 스키마 정의 언어)이라는 DSL(도메인별 언어)을 사용하여 개념 모델을 정의합니다. 다음 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>
두 연결 집합이 연결 집합 끝을 공유하지 않는 한 연결당 여러 연결 집합을 정의할 수 있습니다. 다음 CSDL은 WrittenBy 연결을 위한 두 개의 연관 집합이 포함된 엔터티 컨테이너를 정의합니다. 여러 엔터티 집합이 Book 및 Author 엔터티 형식에 대해 정의되었으며, 어떤 연결 집합도 연결 집합 끝을 공유하지 않습니다.
<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>