Compartir a través de


Especificación de asignaciones de HR Skills (aplicación de ejemplo de EDM)

Con Entity Data Model (EDM), la especificación de asignaciones para la aplicación de ejemplo HR Skills descrita en este grupo de temas asigna las entidades y las asociaciones del esquema en el lenguaje de definición de esquemas conceptuales (CSDL) a los metadatos que describen la base de datos usada para almacenar los datos de la aplicación.

Para obtener información acerca del esquema conceptual que usa esta aplicación, vea WinApp Human Resources Skills (aplicación de ejemplo de EDM). Para obtener más información acerca de los metadatos de almacenamiento, vea Metadatos de almacenamiento de HR Skills (aplicación de ejemplo de EDM).

La sintaxis siguiente del lenguaje de especificación de asignaciones (MSL) asigna el EntityContainer declarado en el esquema conceptual HRSkills al dbo del origen de datos.

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

Los metadatos de almacenamiento denominados HRSkillsTarget contienen un EntityContainer cuyo nombre se corresponde con un objeto dbo de base de datos. Los contenedores de entidades definidos en los esquemas son independientes de los esquemas en los que se definen; los nombres de los espacios de nombres del esquema no certifican los nombres asignados a CdmEntityContainer y a StorageEntityContainer.

Cada entidad de esta implementación se asigna a una tabla de la base de datos. Las entidades tienen propiedades y cada propiedad se asigna a una columna de una tabla. Las asociaciones se asignan entre las columnas de clave de las tablas que representan las entidades.

Las entidades se asignan a las tablas de base de datos mediante la sintaxis EntitySetMapping. Las asociaciones se asignan mediante la sintaxis AssociationSetMapping. Para obtener más información acerca de EntitySetMapping y AssociationSetMapping, vea Especificación de asignaciones y esquemas (Entity Framework).

La sintaxis EntitySetMapping siguiente asigna la entidad Skills del esquema conceptual a la tabla Skills de la base de datos, y cada propiedad de la entidad Skills a una columna de la base de datos.

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

La sintaxis AssociationSetMapping siguiente define la asignación de la asociación entre las entidades Skills y SkillInfo. En primer lugar, una AssociationSetMapping identifica la asociación definida entre las entidades Skills y SkillInfo por su nombre declarado SkillInfo_Skill. Después, la sintaxis identifica la entidad definida en el archivo CSDL: edm:TypeName="SkillInfo_Skill". A continuación, se correlaciona un nombre de tabla del esquema de metadatos con el archivo CSDL mediante la sintaxis edm:TableName="SkillInfo">.

Las propiedades End de la asociación especifican tanto las columnas como las tablas de la base de datos que se correlacionan con entidades y propiedades del esquema conceptual. Por ejemplo, la entidad Skills usa la columna SkillId de la tabla Skills para identificar la instancia de la entidad situada en el End (extremo) de la asociación. La sintaxis incluye una ScalarProperty correlacionada con un 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>

Especificación de asignaciones

La sintaxis siguiente muestra la especificación de asignaciones completa. La sintaxis de una etiqueta EntityContainerMapping especifica un espacio de nombres y una clase: edm:CdmEntityContainer="HRSkillsModel.HRSkills". Esto se asigna al objeto de base de datos, dbo: edm:StorageEntityContainer="HRSkillsTarget.dbo". edm:StorageEntityContainer="HRSkillsTarget.dbo".

El EntityContainer se declara en los esquemas de SSDL y de CSDL. La asignación correlaciona los esquemas, y el proceso de generación hace que las entidades almacenadas en una base de datos estén disponibles como objetos programables.

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

Vea también

Conceptos

WinApp Human Resources Skills (aplicación de ejemplo de EDM)
Metadatos de almacenamiento de HR Skills (aplicación de ejemplo de EDM)
Código de HR Skills Application (aplicación de ejemplo de EDM)
Tipos del Entity Data Model
Relaciones del Entity Data Model