HR Skills 매핑 사양(EDM 샘플 응용 프로그램)

이 항목 그룹에 설명된 HR Skills 응용 프로그램에 대한 매핑 사양은 EDM(엔터티 데이터 모델)을 사용하여 CSDL(개념 스키마 정의 언어)의 엔터티와 연결을 응용 프로그램의 데이터를 저장하는 데 사용되는 데이터베이스를 설명하는 메타데이터에 매핑합니다.

이 응용 프로그램에서 사용되는 개념 스키마에 대한 자세한 내용은 Human Resources Skills WinApp(EDM 샘플 응용 프로그램)를 참조하십시오. 저장소 메타데이터에 대한 자세한 내용은 HR Skills 저장소 메타데이터(EDM 샘플 응용 프로그램)를 참조하십시오.

다음 MSL(매핑 사양 언어) 구문은 개념 스키마 HRSkills에 선언된 EntityContainer를 데이터 소스 dbo에 매핑합니다.

        <EntityContainerMapping CdmEntityContainer="HRSkills"
            StorageEntityContainer="dbo">

이름이 HRSkillsTarget인 저장소 메타데이터에는 데이터베이스 개체 dbo에 해당하는 이름의 EntityContainer가 들어 있습니다. 스키마 내부에 정의된 엔터티 컨테이너는 정의된 스키마와 개별적이고 독립적이며, CdmEntityContainerStorageEntityContainer에 할당된 이름은 스키마 네임스페이스 이름으로 정규화되지 않습니다.

이 구현에서 각 엔터티는 데이터베이스의 테이블에 매핑됩니다. 엔터티는 속성을 가지며 각 속성은 테이블의 열에 매핑됩니다. 연결은 테이블에서 엔터티를 나타내는 키 열 사이에 매핑됩니다.

엔터티는 EntitySetMapping 구문을 사용하여 데이터베이스 테이블에 매핑됩니다. 연결은 AssociationSetMapping 구문을 사용하여 매핑됩니다. EntitySetMappingAssociationSetMapping에 대한 자세한 내용은 스키마 및 매핑 사양(Entity Framework)을 참조하십시오.

다음 EntitySetMapping 구문은 개념 스키마의 Skills 엔터티를 데이터베이스의 Skills 테이블에 매핑하며, Skills 엔터티의 각 속성을 데이터베이스의 열에 매핑합니다.

      <EntitySetMapping Name="Skills">
        <EntityTypeMapping
             TypeName="IsTypeOf(HRSkillsModel.Skills)">
          <MappingFragment StoreEntitySet="Skills">
            <ScalarProperty Name="SkillId" ColumnName="SkillId" />
            <ScalarProperty Name="SkillName" ColumnName="SkillName" />
            <ScalarProperty Name="BriefDescription"
                  ColumnName="BriefDescription" />
          </MappingFragment>
        </EntityTypeMapping>
      </EntitySetMapping>

다음 AssociationSetMapping 구문은 SkillsSkillInfo 엔터티 사이에 연결 매핑을 정의합니다. 먼저, AssociationSetMapping은 선언된 이름 SkillInfo_Skill을 통해 SkillsSkillInfo 엔터티 사이에 정의된 연결을 식별합니다. 그런 다음, 다음 구문에서 CSDL 파일에 정의된 엔터티를 식별합니다. edm:TypeName="SkillInfo_Skill". 마지막으로, edm:TableName="SkillInfo"> 구문을 통해 메타데이터 스키마의 테이블 이름을 CSDL 파일과 연결합니다.

연결의 End 속성은 개념 스키마의 엔터티 및 속성과 연결된 데이터베이스의 열과 해당 테이블을 모두 지정합니다. 예를 들어, Skills 엔터티는 Skills 테이블의 SkillId 열을 사용하여 연결의 End에 있는 엔터티 인스턴스를 식별합니다. 구문에는 ColumnName에 연결된 ScalarProperty가 포함됩니다.

      <AssociationSetMapping Name="SkillInfo_Skill"
  TypeName="HRSkillsModel.SkillInfo_Skill" StoreEntitySet="SkillInfo">
        <EndProperty Name="Skills">
          <ScalarProperty Name="SkillId" ColumnName="SkillId" />
        </EndProperty>
        <EndProperty Name="SkillInfo">
          <ScalarProperty Name="SkillInfoId"
              ColumnName="SkillInfoId" />
        </EndProperty>
      </AssociationSetMapping>

매핑 사양

다음 구문에서는 완전한 매핑 사양을 보여 줍니다. EntityContainerMapping 태그의 구문에서는 네임스페이스와 클래스(edm:CdmEntityContainer="HRSkillsModel.HRSkills")를 모두 지정합니다. 데이터베이스 개체인 dbo(edm:StorageEntityContainer="HRSkillsTarget.dbo")에 매핑합니다.

EntityContainer는 CSDL 및 SSDL 스키마 모두에 선언됩니다. 매핑은 스키마와 관련되며 빌드 프로세스는 사용 가능한 데이터베이스에 저장된 엔터티를 프로그래밍 가능한 개체로 만듭니다.

<?xml version="1.0" encoding="utf-8"?>
      <Mapping Space="C-S" 
        xmlns="urn:schemas-microsoft-com:windows:storage:mapping:CS">
        <EntityContainerMapping StorageEntityContainer="dbo"
            CdmEntityContainer="HRSkills">
          <EntitySetMapping Name="Employees">
            <EntityTypeMapping TypeName="IsTypeOf(HRSkillsModel.Employees)">
              <MappingFragment StoreEntitySet="Employees">
                <ScalarProperty Name="EmployeeId"
                              ColumnName="EmployeeId" />
                <ScalarProperty Name="LastName" ColumnName="LastName" />
                <ScalarProperty Name="FirstName" ColumnName="FirstName" />
                <ScalarProperty Name="Alias" ColumnName="Alias" />
                <ScalarProperty Name="Email" ColumnName="Email" />
              </MappingFragment>
            </EntityTypeMapping>
          </EntitySetMapping>
          <EntitySetMapping Name="References">
            <EntityTypeMapping
                   TypeName="IsTypeOf(HRSkillsModel.References)">
              <MappingFragment StoreEntitySet="References">
                <ScalarProperty Name="ReferenceId"
                   ColumnName="ReferenceId" />
                <ScalarProperty Name="LastName" ColumnName="LastName" />
                <ScalarProperty Name="FirstName" ColumnName="FirstName" />
                <ScalarProperty Name="Position" ColumnName="Position" />
                <ScalarProperty Name="Alias" ColumnName="Alias" />
                <ScalarProperty Name="Email" ColumnName="Email" />
              </MappingFragment>
            </EntityTypeMapping>
          </EntitySetMapping>
          <EntitySetMapping Name="SkillInfo">
            <EntityTypeMapping
                  TypeName="IsTypeOf(HRSkillsModel.SkillInfo)">
              <MappingFragment StoreEntitySet="SkillInfo">
                <ScalarProperty Name="SkillInfoId"
                  ColumnName="SkillInfoId" />
                <ScalarProperty Name="URL" ColumnName="URL" />
              </MappingFragment>
            </EntityTypeMapping>
          </EntitySetMapping>
          <EntitySetMapping Name="Skills">
            <EntityTypeMapping
                 TypeName="IsTypeOf(HRSkillsModel.Skills)">
              <MappingFragment StoreEntitySet="Skills">
                <ScalarProperty Name="SkillId" ColumnName="SkillId" />
                <ScalarProperty Name="SkillName" ColumnName="SkillName" />
                <ScalarProperty Name="BriefDescription"
                      ColumnName="BriefDescription" />
              </MappingFragment>
            </EntityTypeMapping>
          </EntitySetMapping>
          <AssociationSetMapping Name="Reference_Employee"
                  TypeName="HRSkillsModel.Reference_Employee" StoreEntitySet="References">
            <EndProperty Name="Employees">
              <ScalarProperty Name="EmployeeId" ColumnName="EmployeeId" />
            </EndProperty>
            <EndProperty Name="References">
              <ScalarProperty Name="ReferenceId"
                      ColumnName="ReferenceId" />
            </EndProperty>
          </AssociationSetMapping>
          <AssociationSetMapping Name="Skill_Employee"
      TypeName="HRSkillsModel.Skill_Employee" StoreEntitySet="Skills">
            <EndProperty Name="Employees">
              <ScalarProperty Name="EmployeeId" ColumnName="EmployeeId" />
            </EndProperty>
            <EndProperty Name="Skills">
              <ScalarProperty Name="SkillId" ColumnName="SkillId" />
            </EndProperty>
          </AssociationSetMapping>
          <AssociationSetMapping Name="SkillInfo_Skill"
   TypeName="HRSkillsModel.SkillInfo_Skill" StoreEntitySet="SkillInfo">
            <EndProperty Name="Skills">
              <ScalarProperty Name="SkillId" ColumnName="SkillId" />
            </EndProperty>
            <EndProperty Name="SkillInfo">
              <ScalarProperty Name="SkillInfoId"
                  ColumnName="SkillInfoId" />
            </EndProperty>
          </AssociationSetMapping>
        </EntityContainerMapping>
      </Mapping>

참고 항목

개념

Human Resources Skills WinApp(EDM 샘플 응용 프로그램)
HR Skills 저장소 메타데이터(EDM 샘플 응용 프로그램)
HR Skills 응용 프로그램 코드(EDM 샘플 응용 프로그램)
엔터티 데이터 모델 형식
엔터티 데이터 모델 관계