Applicazione WinApp relativa alle competenze delle risorse umane (applicazione di esempio EDM)

La gestione delle informazioni sulle competenze dei dipendenti rappresenta uno scenario interessante per un'applicazione compilata in base a Entity Data Model (EDM). Questa applicazione consente agli utenti di determinare con facilità le competenze di qualsiasi dipendente incluso nel sistema o di trovare un dipendente con competenze identificabili.

Le informazioni sulle competenze dei dipendenti vengono specificate utilizzando associazioni ed entità EDM. Le entità Skills identificano le competenze dei dipendenti tramite un nome e una breve descrizione. Informazioni supplementari sulle competenze vengono fornite in un'entità che include un URL che individua le informazioni. Un'associazione connette le informazioni supplementari con la competenza descritta. Le referenze fornite da persone che hanno lavorato con i dipendenti nel sistema vengono implementate come entità rese disponibili tramite le associazioni con le entità che rappresentano i dipendenti a cui fanno riferimento.

L'implementazione dell'applicazione inizia con lo schema di progettazione XML. Le classi programmabili vengono compilate in base a questo schema. Viene creato un database per supportare le entità e le associazioni dichiarate nello schema di progettazione. I tipi definiti nello schema di progettazione vengono mappati al database tramite lo schema dei metadati di archiviazione.

La progettazione di un'applicazione EDM può incorporare i dati esistenti, ma il processo è più semplice da implementare quando il database è compilato in modo specifico per supportare il modello a oggetti progettato.

Nella schermata seguente sono visualizzati l'applicazione e i risultati di una query sulle competenze di un dipendente. All'avvio dell'applicazione, nella visualizzazione griglia Employees sono visualizzati i nomi di tutti i dipendenti nel sistema. Facendo clic su una riga employee qualsiasi, vengono visualizzate le competenze del dipendente nella visualizzazione griglia Skills. Facendo clic nella schermata sulla riga che rappresenta la competenza descritta come ADO.NET, viene visualizzato il testo nella casella di testo Skills/References. Le competenze (Skills) vengono descritte tramite la breve descrizione contenuta dall'entità Skills. Gli URL delle entità SkillInfo associate alle entità Skills forniscono collegamenti ad altre informazioni. Vengono infine visualizzati i nomi, le posizioni e gli indirizzi di posta elettronica degli oggetti References associati ai dipendenti.

Risultati di query dell'applicazione per la valutazione delle competenze delle risorse umane in Windows

Progettazione

La progettazione di un'applicazione che soddisfi tutti i requisiti per il rilevamento delle competenze dei dipendenti potrebbe richiedere un'analisi più estesa rispetto a quella fatta per questo esempio. Indipendentemente dall'ambito dell'analisi, i dettagli individuati costituiscono le entità, le proprietà delle entità e le associazioni nel dominio dell'applicazione. Le entità, le proprietà e le associazioni sono specificate formalmente in CSDL (Conceptual Schema Definition Language).

Quattro entità astratte e tre relazioni tra queste entità sono importanti nel dominio di questa applicazione. Queste entità e associazioni definiscono i dati utilizzati per identificare e descrivere i dipendenti e le relative competenze. I sette tipi EDM seguenti vengono dichiarati e definiti nello schema utilizzato per implementare i dati utilizzati da questa applicazione.

  • Employees

  • References

  • Skills

  • SkillInfo

  • Skill_EmployeeAssociation

  • Reference_EmployeeAssociation

  • SkillInfo_SkillAssociation

Employees

Le entità Employees in questo esempio di schema dispongono di cinque proprietà tipizzate e di due proprietà di navigazione.

EmployeeId: proprietà chiave a cui sono assegnati dati di tipo Guid e che identifica in modo univoco le istanze dell'entità.

LastName: proprietà stringa che contiene un valore per il cognome di Employee.

FirstName: proprietà stringa che contiene un valore per il nome di Employee.

Alias: proprietà stringa che contiene un alias nelle credenziali di rete della società.

Email: proprietà stringa che contiene l'indirizzo di posta elettronica di Employee.

Skills: proprietà di navigazione utilizzata per esplorare l'associazione tra entità Employees e Skills .

References: proprietà di navigazione utilizzata per esplorare l'associazione tra entità Employees e References.

Per ulteriori informazioni sulle proprietà di navigazione, vedere Proprietà di navigazione (EDM).

L'applicazione HRSkills definisce le entità Employees e le relative proprietà utilizzando la sintassi CSDL seguente.

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

Oltre alle entità Employees già descritte, vengono implementate le entità che rappresentano Skills, Skill Information e References con tre associazioni tra queste entità. Nello schema CSDL seguente vengono dichiarate e definite tutte le entità e le associazioni utilizzate dall'applicazione HRSkills. Questo schema completo viene utilizzato per compilare il modello a oggetti utilizzato dal codice dell'applicazione. Per ulteriori informazioni sulla compilazione del modello a oggetti dagli schemi, vedere Procedura: Procedura: utilizzare EdmGen.exe per generare un modello 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>

Le entità e le associazioni definite in questo schema richiedono un'implementazione di database per la memorizzazione dei dati in questo modello. Per informazioni sulla specifica dei metadati di archiviazione, vedere Metadati di archiviazione per l'applicazione per la valutazione delle competenze delle risorse umane (applicazione di esempio EDM).

Le entità e le associazioni dello schema concettuale in questa sezione prevedono l'utilizzo dello schema di archiviazione per la connessione dei tipi programmabili al database che rende persistenti i dati per l'applicazione. Per ulteriori informazioni sul mapping tra lo schema concettuale in questa sezione e i metadati di archiviazione, vedere Specifica di mapping per l'applicazione per la valutazione delle competenze delle risorse umane (applicazione di esempio EDM).

Vedere anche

Attività

Procedura: utilizzare EdmGen.exe per generare un modello EDM (Entity Framework)

Concetti

Implementazione di entità (EDM)
Implementazione delle associazioni (EDM)

Altre risorse

Specifiche EDM
Specifica di schemi e mapping (Entity Framework)