Partager via


Human Resources Skills WinApp (Exemple d'application EDM)

La gestion des informations sur les compétences des employés est un scénario intéressant pour une application générée sur le modèle EDM (Modèle de données d'entité). Cette application permet aux utilisateurs de facilement déterminer les compétences de tout employé inclus dans le système ou de rechercher un employé présentant des compétences identifiables.

Les informations sur les compétences des employés sont spécifiées à l'aide d'entités et d'associations EDM. Les entités compétences identifient les compétences des employés par un nom et une brève description. Des informations supplémentaires sur les compétences sont fournies par une entité qui inclut une URL permettant de localiser les informations. Une association connecte ces informations supplémentaires à la compétence décrite. Les références données par des personnes ayant travaillé avec les employés dans le système sont implémentées sous forme d'entités et sont rendues disponibles par le biais d'associations avec des entités qui représentent les employés pour lesquels des références sont données.

L'implémentation de l'application commence avec le schéma de conception XML. Les classes programmables sont générées à partir de ce schéma. Une base de données est créée pour prendre en charge les entités et les associations déclarées dans le schéma de conception. Les types définis dans le schéma de conception sont mappés à la base de données par le biais du schéma de métadonnées de stockage.

La conception d'une application EDM peut incorporer des données existantes, mais le processus est plus facile à implémenter lorsque la base de données est construite spécifiquement pour prendre en charge le modèle objet qui est conçu.

La capture d'écran suivante montre l'application et les résultats d'une requête sur les compétences d'un employé. Lorsque l'application démarre, l'affichage de grille Employees affiche les noms de tous les employés dans le système. Le fait de cliquer sur n'importe quelle ligne employee affiche les compétences de l'employé dans l'affichage de grille Skills. Dans la capture d'écran, le fait de cliquer sur la ligne qui représente la compétence décrite comme ADO.NET a conduit à l'affichage indiqué dans la zone de texte Skills/References. Les Skills sont décrits par la brève description contenue dans l'entité Skills. Les URL des entités SkillInfo associées aux entités Skills fournissent des liens vers d'autres informations. Enfin, les noms, les postes et les adresses de messagerie des References associés aux employés sont affichés.

Résultats de la requête de l'application Windows HR Skills

Conception

La conception d'une application répondant aux spécifications de suivi des compétences des employés mériterait une analyse plus approfondie que celle faite dans cet exemple. Quoi qu'il en soit, les détails découverts dans l'analyse composent les entités, les propriétés des entités et les associations dans le domaine de l'application. Les entités, les propriétés et les associations sont formellement spécifiées dans le langage CSDL (Conceptual Schema Definition Language).

Quatre entités abstraites et trois relations entre elles sont importantes dans le domaine de cette application. Ces entités et associations définissent les données utilisées pour identifier et décrire les employés et leurs compétences. Les sept types EDM suivants sont déclarés et définis dans le schéma qui est utilisé pour implémenter les données utilisées par cette application.

  • Employees

  • References

  • Skills

  • SkillInfo

  • Skill_EmployeeAssociation

  • Reference_EmployeeAssociation

  • SkillInfo_SkillAssociation

Employees

Dans cet exemple de schéma, les employés ont cinq propriétés typées et deux propriétés de navigation.

propriété clé à laquelle sont assignées des données de type Guid qui identifient de manière unique les instances de l'entité.

propriété de type chaîne destinée à contenir une valeur pour le nom de famille du Employee.

propriété de type chaîne destinée à contenir une valeur pour le prénom du Employee.

propriété de type chaîne destinée à contenir un alias dans les informations d'identification réseau de la société.

propriété de type chaîne destinée à contenir l'adresse de messagerie du Employee.

propriété de navigation utilisée pour explorer l'association entre les entités Employees et Skills .

propriété de navigation utilisée pour explorer l'association entre les entités Employees et References.

Pour plus d'informations sur les propriétés de navigation, voir Propriétés de navigation (EDM).

L'application HRSkills définit des entités Employees et leurs propriétés à l'aide de la syntaxe CSDL suivante.

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

Outre les entités Employees déjà décrites, les entités représentant Skills, Skill Information et References sont implémentées avec trois associations entre ces entités. Le schéma CSDL suivant déclare et définit toutes les entités et associations utilisées par l'application HRSkills. Ce schéma complet est utilisé pour générer le modèle objet utilisé par le code d'application. Pour plus d'informations sur la construction du modèle objet à partir des schémas, voir Procédure : Procédure : utiliser EdmGen.exe pour générer un modèle EDM (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>

Les entités et associations définies dans ce schéma ont besoin de l'implémentation d'une base de données pour conserver les données de ce modèle. Pour plus d'informations sur la spécification des métadonnées du stockage, voir Métadonnées de stockage de HR Skills (Exemple d'application EDM).

Les entités et les associations du schéma conceptuel de cette section utilisent le schéma de stockage pour connecter des types programmables à la base de données qui conserve les données pour l'application. Pour plus d'informations sur le mappage entre le schéma conceptuel de cette section et les métadonnées de stockage, voir Spécification de mappage de HR Skills (Exemple d'application EDM).

Voir aussi

Tâches

Procédure : utiliser EdmGen.exe pour générer un modèle EDM (Entity Framework)

Concepts

Implémentation d'entités (EDM)
Implémentation d'associations (EDM)

Autres ressources

Spécifications EDM
Schémas et spécification de mappage (Entity Framework)