Compartir a través de


WinApp Human Resources Skills (aplicación de ejemplo de EDM)

Administrar la información sobre los conocimientos de los empleados es un escenario interesante para una aplicación generada en el modelo Entity Data Model (EDM). Esta aplicación facilita a los usuarios el determinar los conocimientos de los empleados incluidos en el sistema o buscar un empleado con conocimientos identificables.

La información sobre los conocimientos de los empleados se especifica mediante entidades y asociaciones de EDM. Las entidades de conocimientos identifican los conocimientos del empleados por su nombre y una breve descripción. La información complementaria sobre los conocimientos se proporciona en una entidad que incluye una dirección URL que localiza la información. Una asociación conecta la información complementaria con los conocimientos que describe. Las referencias de las personas que han trabajado con los empleados en el sistema se implementan como entidades que están disponibles a través de asociaciones con las entidades que representan los empleados a que hacen referencia.

La implementación de la aplicación comienza con el esquema de diseño XML. Las clases programables se generan a partir de este esquema. Se crea una base de datos para admitir las entidades y asociaciones declaradas en el esquema de diseño. Los tipos definidos en el esquema de diseño se asignan a la base de datos por medio del esquema de metadatos de almacenamiento.

El diseño de una aplicación EDM puede incorporar datos existentes, pero el proceso es más fácil de implementar cuando la base de datos se genera específicamente para admitir el modelo de objetos que se está diseñando.

La vista de pantalla siguiente muestra la aplicación y los resultados de una consulta sobre los conocimientos de un empleado. Cuando la aplicación se inicia, la vista de cuadrícula Employees muestra los nombres de todos los empleados en el sistema. Al hacer clic en una fila employee se muestran los conocimientos del empleado en la vista de cuadrícula Skills. En la vista de pantalla, la acción de hacer clic en la fila que representa los conocimientos descritos como ADO.NET ha originado la presentación que se muestra en el cuadro de texto Skills/References. La breve descripción contenida en la entidad Skills describe el elemento Skills. Las direcciones URL de las entidades SkillInfo asociadas a las entidades Skills proporcionan vínculos a otra información. Finalmente se muestran los nombres, las posiciones y las direcciones de correo electrónico de References asociados a los empleados.

Diseño

El diseño de una aplicación que cumple todos los requisitos para realizar el seguimiento de los conocimientos de los empleados puede requerir un análisis más extenso que el realizado para este ejemplo. Independientemente de la extensión del análisis, los detalles detectados abarcan las entidades, las propiedades de las entidades y las asociaciones en el dominio de la aplicación. Las entidades, las propiedades y las asociaciones se especifican formalmente en el lenguaje de definición de esquemas conceptuales (CSDL).

Cuatro entidades abstractas y tres relaciones entre ellas son relevantes en el dominio de esta aplicación. Estas entidades y asociaciones definen los datos que se utilizan para la identificación y la descripción de los empleados y de sus conocimientos. Los siete tipos de EDM siguientes se declaran y definen en el esquema que se utiliza para implementar los datos utilizados por esta aplicación.

  • Employees

  • References

  • Skills

  • SkillInfo

  • Skill_EmployeeAssociation

  • Reference_EmployeeAssociation

  • SkillInfo_SkillAssociation

Empleados

Los empleados de este ejemplo de esquema tienen cinco propiedades con tipos y dos propiedades de navegación.

EmployeeId: propiedad Key que se asigna a los datos de tipo Guid que identifican de forma única las instancias de la entidad.

LastName: propiedad String que contiene un valor para el nombre de la familia de Employee

FirstName: propiedad String que contiene un valor para el nombre de Employee dado

Alias: propiedad String que contiene un alias en las credenciales de red de la compañía

Email: propiedad String que contiene la dirección de correo electrónico de Employee

Skills: propiedad Navigation que se usa para navegar en la asociación entre las entidades Employees y Skills.

References: propiedad Navigation que se usa para navegar en la asociación entre las entidades Employees y References.

Para obtener más información acerca de las propiedades de navegación, vea Propiedades de navegación (EDM).

La aplicación HRSkills define las entidades Employees y sus propiedades usando la sintaxis CSDL siguiente.

        <EntityType Name="Employees">
          <Key>
            <PropertyRef Name="EmployeeId" />
          </Key>
          <Property Name="EmployeeId" Type="Guid" Nullable="false" />
          <Property Name="LastName" Type="String" Nullable="false"
              MaxLength="50" Unicode="true" FixedLength="false" />
          <Property Name="FirstName" Type="String" MaxLength="50"
              Unicode="true" FixedLength="false" />
          <Property Name="Alias" Type="String" Nullable="false"
              MaxLength="50" Unicode="true" FixedLength="false" />
          <Property Name="Email" Type="String" MaxLength="50"
              Unicode="true" FixedLength="false" />
          <NavigationProperty Name="References"
 Relationship="HRSkillsModel.Reference_Employee" FromRole="Employees"
             ToRole="References" />
          <NavigationProperty Name="Skills"
  Relationship="HRSkillsModel.Skill_Employee" FromRole="Employees"
            ToRole="Skills" />
        </EntityType>

Además de las entidades Employees ya descritas, las entidades que representan Skills, Skill Information y References se implementan con tres asociaciones entre estas entidades. El esquema CSDL siguiente declara y define todas las entidades y asociaciones que usa la aplicación HRSkills. Este completo esquema se usa para generar el modelo de objetos que se usa en el código de la aplicación. Para obtener más información acerca de cómo generar el modelo de objetos a partir de esquemas, vea Cómo Cómo usar EdmGen.exe para generar un modelo Entity Data Model (Entity Framework).

<?xml version="1.0" encoding="utf-8"?>
<Schema Namespace="HRSkillsModel" Alias="Self"
             xmlns="https://schemas.microsoft.com/ado/2006/04/edm">
        <EntityContainer Name="HRSkills">
          <EntitySet Name="Employees"
                  EntityType="HRSkillsModel.Employees" />
          <EntitySet Name="References"
                  EntityType="HRSkillsModel.References" />
          <EntitySet Name="SkillInfo"
                  EntityType="HRSkillsModel.SkillInfo" />
          <EntitySet Name="Skills" EntityType="HRSkillsModel.Skills" />
          <AssociationSet Name="Reference_Employee"
                 Association="HRSkillsModel.Reference_Employee">
            <End Role="Employees" EntitySet="Employees" />
            <End Role="References" EntitySet="References" />
          </AssociationSet>
          <AssociationSet Name="Skill_Employee"
                 Association="HRSkillsModel.Skill_Employee">
            <End Role="Employees" EntitySet="Employees" />
            <End Role="Skills" EntitySet="Skills" />
          </AssociationSet>
          <AssociationSet Name="SkillInfo_Skill"
                  Association="HRSkillsModel.SkillInfo_Skill">
            <End Role="Skills" EntitySet="Skills" />
            <End Role="SkillInfo" EntitySet="SkillInfo" />
          </AssociationSet>
        </EntityContainer>
        <EntityType Name="Employees">
          <Key>
            <PropertyRef Name="EmployeeId" />
          </Key>
          <Property Name="EmployeeId" Type="Guid" Nullable="false" />
          <Property Name="LastName" Type="String" Nullable="false"
              MaxLength="50" Unicode="true" FixedLength="false" />
          <Property Name="FirstName" Type="String" MaxLength="50"
              Unicode="true" FixedLength="false" />
          <Property Name="Alias" Type="String" Nullable="false"
              MaxLength="50" Unicode="true" FixedLength="false" />
          <Property Name="Email" Type="String" MaxLength="50"
              Unicode="true" FixedLength="false" />
          <NavigationProperty Name="References"
 Relationship="HRSkillsModel.Reference_Employee" FromRole="Employees"
             ToRole="References" />
          <NavigationProperty Name="Skills"
  Relationship="HRSkillsModel.Skill_Employee" FromRole="Employees"
            ToRole="Skills" />
        </EntityType>
        <EntityType Name="References">
          <Key>
            <PropertyRef Name="ReferenceId" />
          </Key>
          <Property Name="ReferenceId" Type="Guid" Nullable="false" />
          <Property Name="LastName" Type="String" Nullable="false"
               MaxLength="50" Unicode="true" FixedLength="false" />
          <Property Name="FirstName" Type="String" MaxLength="50"
              Unicode="true" FixedLength="false" />
          <Property Name="Position" Type="String" MaxLength="50"
             Unicode="true" FixedLength="false" />
          <Property Name="Alias" Type="String" Nullable="false"
             MaxLength="50" Unicode="true" FixedLength="false" />
          <Property Name="Email" Type="String" MaxLength="50"
             Unicode="true" FixedLength="false" />
          <NavigationProperty Name="Employees"
 Relationship="HRSkillsModel.Reference_Employee" FromRole="References"
            ToRole="Employees" />
        </EntityType>
        <EntityType Name="SkillInfo">
          <Key>
            <PropertyRef Name="SkillInfoId" />
          </Key>
          <Property Name="SkillInfoId" Type="Guid" Nullable="false" />
          <Property Name="URL" Type="String" Nullable="false"
              MaxLength="250" Unicode="true" FixedLength="false" />
          <NavigationProperty Name="Skills"
  Relationship="HRSkillsModel.SkillInfo_Skill" FromRole="SkillInfo"
           ToRole="Skills" />
        </EntityType>
        <EntityType Name="Skills">
          <Key>
            <PropertyRef Name="SkillId" />
          </Key>
          <Property Name="SkillId" Type="Guid" Nullable="false" />
          <Property Name="SkillName" Type="String" Nullable="false"
             MaxLength="50" Unicode="true" FixedLength="false" />
          <Property Name="BriefDescription" Type="String"
 Nullable="false" MaxLength="Max" Unicode="true" FixedLength="false" />
          <NavigationProperty Name="Employees"
        Relationship="HRSkillsModel.Skill_Employee" FromRole="Skills"
          ToRole="Employees" />
          <NavigationProperty Name="SkillInfo"
 Relationship="HRSkillsModel.SkillInfo_Skill" FromRole="Skills"
            ToRole="SkillInfo" />
        </EntityType>
        <Association Name="Reference_Employee">
          <End Role="Employees" Type="HRSkillsModel.Employees"
                  Multiplicity="1" />
          <End Role="References" Type="HRSkillsModel.References"
                  Multiplicity="*" />
        </Association>
        <Association Name="Skill_Employee">
          <End Role="Employees" Type="HRSkillsModel.Employees"
               Multiplicity="1" />
          <End Role="Skills" Type="HRSkillsModel.Skills"
               Multiplicity="*" />
        </Association>
        <Association Name="SkillInfo_Skill">
          <End Role="Skills" Type="HRSkillsModel.Skills"
               Multiplicity="1" />
          <End Role="SkillInfo" Type="HRSkillsModel.SkillInfo"
               Multiplicity="*" />
        </Association>
      </Schema>

Las entidades y asociaciones definidas en este esquema requieren que la implementación de una base de datos contenga los datos en este modelo. Para obtener la especificación de los metadatos de almacenamiento, vea Metadatos de almacenamiento de HR Skills (aplicación de ejemplo de EDM).

Las entidades y asociaciones del esquema conceptual de esta sección usan los metadatos de almacenamiento para conectar los tipos programables con la base de datos que conserva los datos para la aplicación. Para obtener más información acerca de la asignación entre el esquema conceptual de esta sección y los metadatos de almacenamiento, vea Especificación de asignaciones de HR Skills (aplicación de ejemplo de EDM).

Vea también

Tareas

Cómo usar EdmGen.exe para generar un modelo Entity Data Model (Entity Framework)

Conceptos

Implementar entidades (EDM)
Implementar asociaciones (EDM)

Otros recursos

Especificaciones del EDM
Especificación de asignaciones y esquemas (Entity Framework)