다음을 통해 공유


엔터티 컨테이너(EDM)

EDM(엔터티 데이터 모델)에서 EntityContainer는 엔터티 집합 및 연결 집합의 논리적 그룹입니다. 프로그래밍 모델이 CSDL(개념 스키마 정의 언어) 스키마를 기반으로 작성되므로 EntityContainer는 정의되는 개체 모델의 네임스페이스에 대한 사양입니다. SSDL(저장소 스키마 정의 언어) 스키마에서 EntityContainer는 모델을 기반으로 하는 응용 프로그램에 대한 데이터를 유지하는 저장소 컨테이너를 나타냅니다. 이는 RDBMS(관계형 데이터베이스 관리 시스템) 또는 기타 다른 기술의 데이터베이스일 수 있습니다.

EntityContainer는 엔터티와 관계의 범위를 제어합니다. EDM의 모든 형식은 EntityContainer 네임스페이스의 범위 내에 정의됩니다. EntitySetAssociationSet의 인스턴스는 EntityContainer의 범위 내에 만들어집니다. 마찬가지로, EntityType 또는 Association의 인스턴스는 EntitySet 또는 AssociationSet의 범위 내에 만들어집니다.

XML 계층 구조에서 EntityContainer 요소는 EntityContainer가 스키마에 정의되었더라도 Schema 요소와 별개입니다. 이는 EntityContainer를 저장소에 매핑할 때 중요한 내용입니다. 매핑 파일에서 EntityContainer의 정규화된 이름에는 스키마 네임스페이스 이름이 포함되지 않습니다.

EntityContainer는 EDM에서 제공하는 기본 EntityContainer 구조에서 파생됩니다. EntityContainerEntitySetAssociationSet에서 파생된 형식을 지정합니다.

EntityContainer에 정의된 EntitySet에는 별도의 EntityContainer에 정의된 EntityType이 포함될 수 있습니다.

AssociationSet은 별도의 EntityContainer에 정의된 EntitySet을 참조할 수 없습니다.

다음 예제에서는 두 엔터티 형식과 연결 형식의 선언을 보여 주고 두 엔터티 집합과 연결 집합을 사용한 EntityContainer의 선언을 보여 줍니다.

다음 스키마에 엔터티 선언이 포함됩니다.

<?xml version="1.0" encoding="utf-8"?>
<Schema xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
    xmlns:edm="https://schemas.microsoft.com/ado/2006/04/edm"
    xmlns="https://schemas.microsoft.com/ado/2006/04/edm"
    Namespace="MyCompany.EntityTypes" Alias="Self">

    <EntityType Name="Order">
        <Key>
            <PropertyRef Name="OrderId" />
        </Key>
        <Property Name="OrderId" Type="String" />
        <!--Other Properties-->
    </EntityType>

    <EntityType Name="Customer">
        <Key>
            <PropertyRef Name="CustomerId" />
        </Key>
        <Property Name="CustomerId" Type="String" />
        <!--Other Properties-->
    </EntityType>

</Schema>

다음 스키마에 연결 선언이 포함됩니다.

<?xml version="1.0" encoding="utf-8"?>
<Schema xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
    xmlns:edm="https://schemas.microsoft.com/ado/2006/04/edm"
    xmlns="https://schemas.microsoft.com/ado/2006/04/edm"
    Namespace="MyCompany.RelationshipTypes">

    <Using Namespace="MyCompany.EntityTypes" Alias="basicTypes"/>

    <Association Name="CustomerOrder">
        <End Type="basicTypes.Customer" Multiplicity="1" />
        <End Type="basicTypes.Order" Multiplicity="*" />
    </Association>
</Schema>

다음 스키마에 엔터티 컨테이너 선언이 포함됩니다.

<?xml version="1.0" encoding="utf-8"?>
<Schema xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
    xmlns:edm="https://schemas.microsoft.com/ado/2006/04/edm"
    xmlns="https://schemas.microsoft.com/ado/2006/04/edm"
    Namespace="MyCompany.ContainerType">

    <EntityContainer name="ContainerOne">
        <Using Namespace="MyCompany.EntityTypes" Alias="basicTypes"/>
        <Using Namespace="MyCompany.RelationshipTypes" Alias="relnTypes"/>

        <EntitySet Name="CustomerSet" EntityType="basicTypes.Customer"/>
        <EntitySet Name="OrderSet" EntityType="basicTypes.Order"/>

        <AssociationSet Name="CustomerOrderSet" Association="relnTypes.CustomerOrder">
            <End EntitySet="CustomerSet" Role="Orders"/>
            <End EntitySet="OrderSet" Role="OrderedBy"/>
        </AssociationSet>
    </EntityContainer>
</Schema>

참고 항목

개념

Association(EDM)

기타 리소스

스키마 및 매핑 사양(Entity Framework)