AssociationSetMapping 요소(MSL)
EDM(엔터티 데이터 모델)에서 연결을 매핑하면 관련 엔터티의 EndProperty 요소에 해당하는 데이터 테이블의 열이 식별됩니다. 연관시킬 개념 스키마의 엔터티의 경우, 다른 테이블의 일부 속성을 포함하는 외래 키 열이 데이터 테이블에 있어야 합니다. 일반적으로 이 외래 키 열은 엔터티의 키 속성과 일치합니다.
AssociationSetMapping은 EntityContainerMapping 요소의 내부에서 지정됩니다. Employee_Employee_ManagerIDAssociationSetMapping의 다음 선언에서는 AdventureWorksHRModel 개념 스키마에서 정의된 AssociationSet 및 TypeName의 매핑을 정의합니다.
관련된 두 엔터티 모두 Employee 엔터티이므로 테이블 하나에 두 엔터티의 데이터가 모두 포함됩니다. 이 예제의 EndProperty 요소는 개념 스키마에서 정의된 각 관련 엔터티의 역할을 지정하며, ScalarProperty 요소는 각 엔터티의 속성뿐만 아니라 이 속성에 해당하는 ColumnName을 지정합니다. 이 연결의 두 End는 모두 Employee 엔터티이며, 각각의 경우에서 식별 속성은 Employee 데이터 테이블의 해당 EmployeeID 열에 연결됩니다. 조건에서는 두 번째 Employee의 ManagerID 열에 값이 할당되어야 하며 그렇지 않으면 Association이 유효하지 않음을 지정합니다.
<?xml version="1.0" encoding="utf-8"?>
<Mapping Space="C-S"
xmlns="urn:schemas-microsoft-com:windows:storage:mapping:CS">
<EntityContainerMapping CdmEntityContainer="HumanResources"
StorageEntityContainer="HumanResources">
<AssociationSetMapping Name="Employee_Employee_ManagerID"
TypeName="AdventureWorksHRModel.Employee_Employee_ManagerID"
StoreEntitySet="Employee">
<EndProperty Name="Employee">
<ScalarProperty Name="EmployeeID" ColumnName="ManagerID" />
</EndProperty>
<EndProperty Name="EmployeeManager">
<ScalarProperty Name="EmployeeID" ColumnName="EmployeeID" />
</EndProperty>
<Condition ColumnName="ManagerID" IsNull="false" />
</AssociationSetMapping>
</EntityContainerMapping>
이 예제에서 AssociationSetMapping 요소는 AdventureWorksHRModel 스키마의 일부입니다. 이 AssociationSetMapping의 HumanResourcesEntityContainerMapping 요소는 Employee_Employee_ManagerID 연결을 매핑합니다. 연결은 직원 엔터티를 관리자로 지정된 다른 직원 엔터티와 관련시킵니다.
이 매핑은 AssociationSetMapping의 마지막 줄에서 지정된 Condition에 따라 결정됩니다. 연결이 유효하려면 Employee 엔터티를 Employee 테이블의 ManagerID 열에 있는 외래 키 값에 의해 관리자로 지정된 다른 Employee 엔터티와 연결해야 합니다. 이 열에 값이 할당되지 않는 경우, 조건이 충족되지 않으며 따라서 이 연결에서 추가 세부 사항을 할당하는 것은 무의미합니다. ManagerID 값이 null일 때 이러한 종류의 연결이 생성되는 경우, SaveChanges 메서드를 호출하면 연결에서 예외가 throw됩니다.
참고 항목
개념
EntityContainerMapping 요소(MSL)
Association 요소(CSDL)
AssociationSet 요소(EntityContainer CSDL)
Association 요소(SSDL)
AssociationSet 요소(EntityContainer SSDL)
AdventureWorks 전체 모델(EDM)