Specifica di mapping per l'applicazione per la valutazione delle competenze delle risorse umane (applicazione di esempio EDM)

Utilizzando Entity Data Model (EDM), la specifica di mapping per l'applicazione di esempio per la valutazione delle competenze delle risorse umane descritta in questo gruppo di argomenti esegue il mapping delle entità e delle associazioni nello schema CSDL (Conceptual Schema Definition Language) ai metadati che descrivono il database utilizzato per archiviare i dati per l'applicazione.

Per informazioni sullo schema concettuale utilizzato da questa applicazione, vedere Applicazione WinApp relativa alle competenze delle risorse umane (applicazione di esempio EDM). Per informazioni sui metadati di archiviazione, vedere Metadati di archiviazione per l'applicazione per la valutazione delle competenze delle risorse umane (applicazione di esempio EDM).

Nella sintassi MSL (Mapping Specification Language) seguente viene eseguito il mapping dell'oggetto EntityContainer dichiarato nello schema concettuale HRSkills all'origine dati dbo.

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

I metadati di archiviazione denominati HRSkillsTarget contengono un oggetto EntityContainer denominato in modo da corrispondere a un oggetto di database dbo. I contenitori di entità definiti negli schemi sono separati e indipendenti dagli schemi in cui sono definiti. I nomi assegnati a CdmEntityContainer e a StorageEntityContainer non sono qualificati dai nomi degli spazi dei nomi dello schema.

Ogni entità in questa implementazione è mappata a una tabella nel database. Le entità dispongono di proprietà e ogni proprietà è mappata a una colonna in una tabella. Viene eseguito il mapping delle associazioni tra colonne chiave nelle tabelle che rappresentano le entità.

Le entità vengono mappate alle tabelle di database utilizzando la sintassi EntitySetMapping. Le associazioni vengono mappate utilizzando la sintassi AssociationSetMapping. Per ulteriori informazioni su EntitySetMapping e su AssociationSetMapping, vedere Specifica di schemi e mapping (Entity Framework).

La sintassi EntitySetMapping seguente esegue il mapping dell'entità Skills nello schema concettuale alla tabella Skills nel database e il mapping di ogni proprietà dell'entità Skills a una colonna nel database.

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

Nella sintassi AssociationSetMapping seguente viene definito il mapping dell'associazione tra entità Skills e SkillInfo. Un oggetto AssociationSetMapping identifica innanzitutto l'associazione definita tra entità Skills e SkillInfo in base al nome dichiarato SkillInfo_Skill. La sintassi identifica quindi l'entità definita nel file CSDL, edm:TypeName="SkillInfo_Skill". Un nome di tabella nello schema dei metadati viene quindi correlato al file CSDL tramite la sintassi edm:TableName="SkillInfo">.

Le proprietà End dell'associazione specificano sia le colonne che le relative tabelle nel database correlate a entità e proprietà nello schema concettuale. L'entità Skills utilizza ad esempio la colonna SkillId della tabella Skills per identificare l'istanza dell'entità finale (End) dell'associazione. La sintassi include un oggetto ScalarProperty correlato a un oggetto ColumnName.

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

Specifica di mapping

Nella sintassi seguente viene illustrata la specifica di mapping completa. La sintassi di un tag EntityContainerMapping specifica sia uno spazio dei nomi che una classe: edm:CdmEntityContainer="HRSkillsModel.HRSkills". Viene eseguito il mapping a un oggetto di database, dbo: edm:StorageEntityContainer="HRSkillsTarget.dbo". edm:StorageEntityContainer="HRSkillsTarget.dbo".

L'oggetto EntityContainer viene dichiarato in entrambi gli schemi, CSDL e SSDL. Il mapping mette in correlazione gli schemi e il processo di compilazione rende disponibili le entità archiviate in un database come oggetti programmabili.

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

Vedere anche

Concetti

Applicazione WinApp relativa alle competenze delle risorse umane (applicazione di esempio EDM)
Metadati di archiviazione per l'applicazione per la valutazione delle competenze delle risorse umane (applicazione di esempio EDM)
Codice dell'applicazione per la valutazione delle competenze delle risorse umane (applicazione di esempio EDM)
Tipi EDM (Entity Data Model)
Relazioni in Entity Data Model