다음을 통해 공유


Association(EDM)

EDM(엔터티 데이터 모델)에서 관계는 엔터티 간 논리적 연결을 모델링합니다. EDM은 엔터티 사이의 피어 투 피어 관계를 모델링하는 관계의 AssociationType을 지원합니다.

연결에 참여하는 각 엔터티를 End라고 합니다. 각 End에는 연결의 각 End에 대한 논리를 설명하고 이름을 지정하는 데 사용되는 Role 특성이 있습니다.

연결 End의 Type 특성은 관계에 참여하는 엔터티 형식을 정의합니다.

연결에는 Multiplicity 특성이 있습니다. Multiplicity 특성은 관계에 참여할 수 있는 각 End의 인스턴스 수를 지정합니다.

많은 LOB 응용 프로그램의 논리에서는 고객이 주문을 하고, 주문 상품이 고객에게 전달되어야 합니다. EDM 연결을 통해 고객과 주문 사이의 관계를 모델링할 수 있습니다. 연결의 End는 고객 및 주문 엔터티입니다. 각 End에는 Type 엔터티가 있습니다. Role 특성은 Type 특성에 지정된 엔터티의 기능을 설명합니다. 대부분의 경우 각 고객은 0개 이상의 주문을 가질 수 있지만 하나의 주문은 한 명의 고객에게만 연결됩니다. 즉, 고객 형식의 Multiplicity는 1이고, 주문의 Multiplicity는 *입니다. Multiplicity에 대한 자세한 내용은 엔터티 데이터 모델 관계를 참조하십시오.

예제

다음 CSDL(개념 스키마 정의 언어) 구문에서 Association 요소는 CustomersOrders 간 관계의 논리를 지정합니다.

<?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.LOBSchema" Alias="Self">


<EntityType Name="Customer">
    <Key>
      <PropertyRef Name="CustomerId" />
    </Key>
    <Property Name="CustomerId" Type="Guid" Nullable="false" />
    <Property Name="Name" Type="String" Nullable="false" />
    <Property Name="Address" Type="String" Nullable="false" />
    <Property Name="City" Type="String" Nullable="false" />
    <NavigationProperty Name="Orders" Relationship="Self.Order_Customer" FromRole="Customers" ToRole="Orders" />
  </EntityType>

  <EntityType Name="Order">
    <Key>
      <PropertyRef Name="OrderId" />
    </Key>
    <Property Name="OrderId" Type="String" Nullable="false" />
    <Property Name="TotalAmount" Type="Decimal" />
    <Property Name="Tax" Type="Decimal" />
    <Property Name="ShippingAddress" Type="String" />
    <NavigationProperty Name="Customer" Relationship="Self.Order_Customer" FromRole="Orders" ToRole="Customers" />
  </EntityType>

  <Association Name="Order_Customer">
    <End Role="Customer" Type="OrderInfoModel.Customers"
                             Multiplicity="1" />
    <End Role="Orders" Type="OrderInfoModel.Order" Multiplicity="*" />
  </Association>


    <EntityContainer Name="LOBSchemaData">
        <EntitySet Name="Customers" EntityType="Self.Customer" />
        <EntitySet Name="Orders" EntityType="Self.Order" />
        <AssociationSet Name="Customers_Orders"
                        Association="Self.Order_Customer">
            <End Role="Customer" EntitySet="Customers" />
            <End Role="Order" EntitySet="Orders" />
        </AssociationSet>
        
    </EntityContainer>
</Schema>

Order_CustomerAssociationName 특성은 모든 작업의 관계를 식별하는 데 사용됩니다. 참여하는 각 엔터티는 End입니다. 모든 작업의 Type 특성입니다. 참여하는 각 엔터티는 연결에 참여하는 엔터티 형식을 지정하는 End입니다. 이 경우에는 CustomersOrders입니다. 각 End에는 Role 특성과 Multiplicity 특성이 있습니다.

EDM 연결의 특징

연결은 다음과 같은 특징을 갖습니다.

  • 복합성: 연결 End 요소는 0..n일 수 있으며, 각 End의 카디널리티는 다를 수 있습니다.

  • 비독점적 멤버 자격: 한 엔터티 형식이 여러 연결에 참여할 수 있습니다.

  • 방향: 연결은 엔터티 사이에서 양방향이며 어느 쪽 End에서나 반대쪽으로 탐색될 수 있습니다.

복합성

Multiplicity 특성은 모든 작업의 카디널리티를 정의합니다. 참여하는 각 엔터티는 AssociationEnd 요소입니다. 위의 CSDL 예제에서는 0개 이상의 주문(Multiplicty="*")에 한 명의 Customer (Multiplicty="1")만 있도록 지정합니다.

다음 표에서는 가능한 Multiplicity 값을 모두 보여 줍니다.

설명

0..1

0 또는 1

1

정확히 하나

*

0 또는 하나 이상

비독점적 멤버 자격

한 엔터티 형식이 여러 연결에 참여할 수 있습니다.

방향

EDM의 연결은 양방향입니다.

참고 항목

개념

엔터티 데이터 모델 관계