Human Resources Skills-WinApp (EDM-Beispielanwendung)
Das Verwalten von Informationen über Mitarbeiterfähigkeiten ist ein interessantes Szenario für eine mit dem Entitätsdatenmodell (EDM) erstellte Anwendung. Mit dieser Anwendung können die Fähigkeiten eines beliebigen im System enthaltenen Mitarbeiters ermittelt und nach einem Mitarbeiter mit bestimmten Fähigkeiten gesucht werden.
Informationen über Mitarbeiterfähigkeiten werden mithilfe von EDM-Entitäten und -Zuordnungen angegeben. Entitäten bezeichnen die Mitarbeiterfähigkeiten anhand des Namens und einer kurzen Beschreibung. Ergänzende Informationen über Fähigkeiten werden durch eine Entität bereitgestellt, die eine auf die Informationen verweisende URL enthält. Eine Zuordnung verbindet die ergänzenden Informationen mit der zugehörigen Fähigkeit. Referenzen von Personen, die mit Mitarbeitern im System zusammengearbeitet haben, werden als Entitäten implementiert. Diese werden durch Zuordnungen mit den Entitäten bereitgestellt, die den jeweiligen Mitarbeiter darstellen.
Die Implementierung der Anwendung beginnt mit einem XML-Entwurfsschema. Mit diesem Schema werden programmierbare Klassen erstellt. Eine Datenbank wird zur Unterstützung der im Entwurfsschema deklarierten Entitäten und Zuordnungen erstellt. Die im Entwurfsschema definierten Typen werden der Datenbank mittels des Speichermetadatenschemas zugeordnet.
Der Entwurf einer EDM-Anwendung kann bestehende Daten umfassen. Der Prozess ist jedoch am einfachsten zu implementieren, wenn die Datenbank speziell für die Unterstützung des zu entwerfenden Objektmodells erstellt wird.
Die folgende Bildschirmanzeige stellt die Anwendung mit den Ergebnissen einer Abfrage zu den Fähigkeiten eines Mitarbeiters dar. Beim Start der Anwendung zeigt die Employees-Rasteransicht die Namen aller Mitarbeiter im System. Durch Klicken auf eine employee-Zeile werden die Fähigkeiten des Mitarbeiters in der Skills-Rasteransicht angezeigt. Nachdem auf die Zeile geklickt wurde, die die als ADO.NET beschriebene Fähigkeit repräsentiert, wird das in der Bildschirmanzeige dargestellte Skills/References-Textfeld angezeigt. Skills werden anhand einer kurzen Beschreibung erläutert, die in der Skills-Entität enthalten ist. URLs von den SkillInfo -Entitäten, die Skills -Entitäten zugeordnet sind, stellen Links zu weiteren Informationen bereit. Schließlich werden die Namen, Positionen und E-Mail-Adressen von References angezeigt, die Mitarbeitern zugeordnet sind.
Entwurf
Der Entwurf einer Anwendung, die alle Anforderungen für das Nachschlagen von Mitarbeiterfähigkeiten erfüllt, könnte eine etwas umfangreichere Analyse als bei diesem Beispiel erfordern. Unabhängig vom Umfang der Analyse bilden die festgestellten Details die Entitäten, Eigenschaften von Entitäten und Zuordnungen in der Anwendungsdomäne. Die Entitäten, Eigenschaften und Zuordnungen werden formal in konzeptioneller Schemadefinitionssprache (Conceptual Schema Definition Language, CSDL) angegeben.
Vier abstrakte Entitäten und drei Beziehungen zwischen ihnen sind in dieser Anwendung wichtig. Mithilfe der Entitäten und Zuordnungen werden die Daten definiert, mit denen Mitarbeiter und ihre Fähigkeiten benannt und erläutert werden. Die folgenden sieben EDM-Typen werden in dem Schema deklariert und definiert, mit dem die von dieser Anwendung verwendeten Daten implementiert werden.
Employees
References
Skills
SkillInfo
Skill_EmployeeAssociation
Reference_EmployeeAssociation
SkillInfo_SkillAssociation
Mitarbeiter
Mitarbeiter verfügen in diesem Schemabeispiel über fünf typisierte Eigenschaften und zwei Navigationseigenschaften.
EmployeeId : Schlüsseleigenschaft, der Daten des Typs Guid zugewiesen werden, mit denen Instanzen der Entität eindeutig identifiziert werden.
LastName : Zeichenfolgeneigenschaft zum Speichern eines Werts für den Employee -Nachnamen
FirstName : Zeichenfolgeneigenschaft zum Speichern eines Werts für den Employee -Vornamen
Alias : Zeichenfolgeneigenschaft zum Speichern eines Alias in den Netzwerkanmeldeinformationen des Unternehmens
Email : Zeichenfolgeneigenschaft zum Speichern der Employee -E-Mail-Adresse
Skills : Navigationseigenschaft zum Navigieren der Zuordnung zwischen der Employees -Entität und der Skills -Entität
References : Navigationseigenschaft zum Navigieren der Zuordnung zwischen der Employees -Entität und der References -Entität
Weitere Informationen über Navigationseigenschaften finden Sie unter Navigationseigenschaften (EDM) .
Die HRSkills -Anwendung definiert Employees -Entitäten und ihre Eigenschaften mithilfe der folgenden CSDL-Syntax.
<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>
Zusätzlich zu den bereits beschriebenen Employees -Entitäten werden Entitäten für Skills , Skill Information und References mit drei Zuordnungen zwischen ihnen implementiert. Das folgende CSDL-Schema deklariert und definiert alle Entitäten und Zuordnungen, die von der HRSkills-Anwendung verwendet werden. Mit diesem vollständigen Schema wird das vom Anwendungscode verwendete Objektmodell erstellt. Informationen zum Erstellen des Objektmodells aus Schemas finden Sie unter "Gewusst wie: Gewusst wie: Verwenden von 'EdmGen.exe' zum Generieren eines 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>
Die in diesem Schema definierten Entitäten und Zuordnungen erfordern eine Datenbankimplementierung zum Speichern der Daten in diesem Modell. Informationen zur Spezifikation der Speichermetadaten finden Sie unter HR Skills-Speichermetadaten (EDM-Beispielanwendung) .
Die Entitäten und Zuordnungen des konzeptionellen Schemas in diesem Abschnitt verwenden das Speicherschema, um programmierbare Typen mit der Datenbank zu verbinden, die die Daten für die Anwendung enthält. Weitere Informationen über das Mapping zwischen dem konzeptionellen Schema in diesem Abschnitt und den Speichermetadaten finden Sie unter HR Skills-Mappingspezifikation (EDM-Beispielanwendung) .
Siehe auch
Aufgaben
Gewusst wie: Verwenden von 'EdmGen.exe' zum Generieren eines Entity Data Model (Entity Framework)
Konzepte
Implementieren von Entitäten (EDM)
Implementieren von Zuordnungen (EDM)
Weitere Ressourcen
EDM-Spezifikationen
Schemas und Mappingspezifikation (Entity Framework)