Freigeben über


HR Skills-Mappingspezifikation (EDM-Beispielanwendung)

Mithilfe des Entitätsdatenmodell (EDM) ordnet die Mappingspezifikation der in dieser Themengruppe beschriebenen HR Skills-Beispielanwendung die Entitäten und Zuordnungen im CSDL-Schema Metadaten zu, die die Datenbank beschreiben, in der die Daten für die Anwendung gespeichert werden.

Informationen über das von dieser Anwendung verwendete konzeptionelle Schema finden Sie unter Human Resources Skills-WinApp (EDM-Beispielanwendung). Informationen über die Speichermetadaten finden Sie unter HR Skills-Speichermetadaten (EDM-Beispielanwendung).

Mithilfe der folgenden MSL-Syntax wird der im konzeptionellen Schema HRSkills deklarierte EntityContainer der Datenquelle dbo zugeordnet.

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

Die Speichermetadaten mit dem Namen HRSkillsTarget enthalten einen EntityContainer, dessen Name einem Datenbankobjekt dbo entspricht. Die in Schemas definierten Entitätencontainer sind separat und unabhängig von den Schemas, in denen sie definiert werden. Die CdmEntityContainer und StorageEntityContainer zugewiesenen Namen werden nicht durch die Namen der Schemanamespaces qualifiziert.

Jede Entität in dieser Implementierung wird einer Tabelle in der Datenbank zugeordnet. Entitäten verfügen über Eigenschaften, und jede Eigenschaft ist einer Spalte einer Tabelle zugeordnet. Die Zuordnungen werden zwischen Schlüsselspalten in den Tabellen zugeordnet, die die Entitäten darstellen.

Datenbanktabellen werden Entitäten mithilfe von EntitySetMapping-Syntax zugeordnet. Zuordnungen werden mithilfe von AssociationSetMapping-Syntax zugeordnet. Weitere Informationen zu EntitySetMapping und AssociationSetMapping finden Sie unter Schemas und Mappingspezifikation (Entity Framework).

Folgende EntitySetMapping-Syntax ordnet die Skills-Entität im konzeptionellen Schema der Tabelle Skills in der Datenbank zu. Gleichzeitig werden alle Eigenschaften der Skills-Entität einer Spalte in der Datenbank zugeordnet.

      <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>

Die folgende AssociationSetMapping-Syntax definiert das Mapping der Zuordnung zwischen der Skills-Entität und der SkillInfo -Entität. Zunächst identifiziert ein AssociationSetMapping die definierte Zuordnung zwischen den Entitäten Skills und SkillInfo über den deklarierten Namen SkillInfo_Skill. Anschließend identifiziert die Syntax die in der CSDL-Datei definierte Entität: edm:TypeName="SkillInfo_Skill". Im nächsten Schritt wird der CSDL-Datei mithilfe der Syntax edm:TableName="SkillInfo"> im Metadatenschema ein Tabellenname zugewiesen.

Die End-Eigenschaften der Zuordnung bestimmen sowohl die Spalten als auch deren Tabellen in der Datenbank, die den Entitäten und Zuordnungen im konzeptionellen Schema entsprechen. So wird beispielsweise für die Entität Skills die Spalte SkillId der Tabelle Skills verwendet, um die Entitätsinstanz am End der Zuordnung zu bestimmen. Die Syntax enthält eine ScalarProperty, die einem ColumnName entspricht.

      <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>

Mappingspezifikation

Die folgende Syntax stellt die vollständige Mappingspezifikation dar. Die Syntax eines EntityContainerMapping-Tags gibt sowohl einen Namespace als auch eine Klasse an: edm:CdmEntityContainer="HRSkillsModel.HRSkills". Diese wird dem Datenbankobjekt dbo zugeordnet: edm:StorageEntityContainer="HRSkillsTarget.dbo"``edm:StorageEntityContainer="HRSkillsTarget.dbo".

Der EntityContainer wird sowohl im CSDL- als auch im SSDL-Schema deklariert. Anhand des Mappings werden die Schemas in Beziehung gesetzt. Durch den Erstellungsprozess werden die in einer Datenbank gespeicherten Entitäten als programmierbare Objekte verfügbar gemacht.

<?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>

Siehe auch

Konzepte

Human Resources Skills-WinApp (EDM-Beispielanwendung)
HR Skills-Speichermetadaten (EDM-Beispielanwendung)
HR Skills-Anwendungscode (EDM-Beispielanwendung)
Entity Data Model-Typen
Entity Data Model-Beziehungen