Exportieren (0) Drucken
Alle erweitern

Exemplarische Vorgehensweise: Zuordnen der hierarchiespezifischen Tabellenvererbung in Dynamic Data

In dieser exemplarischen Vorgehensweise wird veranschaulicht, wie die "Tabelle pro Hierarchie"-Vererbung (TPH) durch Ändern des konzeptionellen Modells in einem EDM (Entity Data Model) implementiert wird. Das TPH-Vererbungsmodell wird von einem Dynamic Data Entity Framework-Projekt verwendet.

Die TPH-Vererbung verwendet eine Datenbanktabelle, um die Daten aller Entitätstypen in einer Vererbungshierarchie zu verwalten. Dies wird auch als Vererbung für eine einzelne Tabelle bezeichnet. Weitere Informationen zum Implementieren der Vererbung mit einem EDM finden Sie unter Inheritance. Weitere Informationen zur Verwendung der Vererbung mit Dynamic Data finden Sie unter ASP.NET Dynamic Data-Infrastruktur.

In dieser exemplarischen Vorgehensweise implementieren Sie die TPH-Vererbung, indem Sie das aus der Beispieldatenbank "School" generierte EDM ändern. Im EDM der Beispieldatenbank "School" verfügt der Person-Entitätstyp über die zwei Eigenschaften HireDate und EnrollmentDate. Diese Eigenschaften können zu neuen Entitätstypen gehören (Instructor und Student), die von Person erben.

In dieser exemplarischen Vorgehensweise implementieren Sie die TPH-Vererbung mithilfe der folgenden Schritte:

  1. Erstellen Sie zwei neue Entitätstypen, die von Person abgeleitet sind.

  2. Verschieben Sie Eigenschaften, die für jeden Untertyp spezifisch sind, aus der Person-Entität in die Untertypentität.

  3. Legen Sie Einschränkungen für untertypenspezifische Eigenschaften fest.

  4. Legen Sie den Person-Entitätstyp als abstrakten Typ fest.

  5. Ordnen Sie jeden Entitätsuntertyp der Tabelle Person mit einer Bedingung für ein untertypenspezifisches Feld zu.

Für die Durchführung dieser exemplarischen Vorgehensweise benötigen Sie Folgendes:

  • Microsoft Visual Studio 2010 oder eine höhere Version

  • Die Beispieldatenbank "School". Sie können eine Version dieser Datenbank für Microsoft SQL Server 2008 von der CodePlex-Website herunterladen, oder Sie können sie mit Transact-SQL-Anweisungen erstellen. Weitere Informationen finden Sie unter Creating the School Sample Database.

  • Eine Dynamic Data Entities-Website, die die Beispieldatenbank "School" verwendet. In dieser exemplarischen Vorgehensweise wird davon ausgegangen, dass "School.edmx" als Name für die ADO.NET EDM (Entity Data Model)-Datei verwendet wird.

In dieser exemplarischen Vorgehensweise wird zudem davon ausgegangen, dass Sie mit ASP.NET Dynamic Data vertraut sind. Weitere Informationen finden Sie unter Übersicht über ASP.NET Dynamic Data.

Zu diesem Thema steht ein Visual Studio-Projekt mit Quellcode zur Verfügung: Dynamic Data Entity Framework. Sie können sich ein Video ansehen, in dem das Hinzufügen neuer Entitäten veranschaulicht wird: Zuordnen der "Tabelle pro Hierarchie"-Vererbung.

Als ersten Schritt ändern Sie den konzeptionellen Teil des EDM SchoolModel, um die TPH-Vererbung zu implementieren. Sie fügen die zwei Entitäten Student und Instructor hinzu. Beide Entitäten erben von der Person-Entität. Eigenschaften, die für die Student-Entität eindeutig sind, werden aus der Person-Entität in die Student-Entität verschoben. Eigenschaften, die für die Instructor-Entität eindeutig sind, werden aus der Person-Entität in die Instructor-Entität verschoben. Die Person-Entität enthält Eigenschaften, die beide geerbte Entitäten gemeinsam haben.

So fügen Sie neue Entitäten hinzu

  1. Öffnen Sie ein Dynamic Data-Webprojekt, in dem die Beispieldatenbank "School" verwendet wird und das die Datei "School.edmx" als ADO.NET-EDM (Entity Data Model)-Datei enthält.

    Weitere Informationen finden Sie im Abschnitt Voraussetzungen in diesem Thema.

  2. Doppelklicken Sie im Projektmappen-Explorer auf die Datei School.edmx.

    Die Datei School.edmx wird im ADO.NET Entity Data Model-Designer (Entity Designer) geöffnet.

  3. Klicken Sie mit der rechten Maustaste auf eine leere Stelle der Designoberfläche des Entity Designers, wählen Sie Hinzufügen aus, und klicken Sie dann auf Entität.

    Das Dialogfeld Entität hinzufügen wird angezeigt. Die folgende Abbildung zeigt die Benutzeroberflächenelemente, mit denen eine Entität hinzugefügt wird.

    Mit der rechten Maustaste auf einen leeren Bereich der Entwurfsoberfläche klicken

    Die folgende Abbildung zeigt das Dialogfeld Entität hinzufügen.

    Entität hinzufügen
  4. Geben Sie Instructor für Entitätsname ein.

  5. Wählen Sie in der Liste Basistyp Person aus.

  6. Klicken Sie auf OK.

    Die folgende Abbildung zeigt den neuen Entitätstyp, der erstellt und in der Entwurfsoberfläche angezeigt wird.

    Die Instructor-Entität
  7. Wiederholen Sie die vorhergehenden Schritte, geben Sie jedoch Student für Entitätsname an.

    Auf der Designoberfläche werden die beiden neuen Entitätstypen Instructor und Student angezeigt. Von den neuen Entitätstypen zeigen Pfeile auf den Entitätstyp Person. Hiermit wird angegeben, dass Person der Basistyp für die neuen Entitätstypen ist.

  8. Klicken Sie im Entity Designer unter Skalareigenschaften mit der rechten Maustaste auf die HireDate-Eigenschaft des Person-Entitätstyps, und klicken Sie dann auf Ausschneiden.

  9. Klicken Sie im Entity Designer mit der rechten Maustaste auf Skalareigenschaften des Instructor-Entitätstyps, und wählen Sie dann Einfügen aus.

  10. Klicken Sie mit der rechten Maustaste auf die HireDate-Eigenschaft, und wählen Sie dann Eigenschaften aus.

  11. Legen Sie im Eigenschaftenfenster die Nullable-Eigenschaft auf false fest.

  12. Wiederholen Sie vorhergehenden vier Schritte, schneiden Sie jedoch die EnrollmentDate-Eigenschaft des Person-Entitätstyps aus, und fügen Sie diese im Student-Entitätstyp ein.

  13. Wählen Sie den Person-Entitätstyp aus.

  14. Legen Sie im Eigenschaftenfenster die Abstract-Eigenschaft des Person-Entitätstyps auf true fest.

    Es wird eine Meldung mit dem Hinweis angezeigt, dass alle vorhandenen Funktionszuordnungen für einen Entitätstyp entfernt werden, wenn dieser als abstrakt definiert wird.

  15. Klicken Sie auf OK.

    HinweisHinweis

    Sie müssen keine abstrakten Typen verwenden, um TPH-Szenarien zu modellieren. In diesem Beispiel werden abstrakte Typen verwendet, um ihre Verwendung in einem EDM zu veranschaulichen.

Sie ordnen nun der Person-Entität die Instructor-Entität und Student-Entität zu. Lehrkräfte werden eingestellt, sie immatrikulieren sich jedoch nicht. Studierende werden nicht eingestellt, sie immatrikulieren sich. Das Entity Framework verwendet das Einstellungsdatum und Immatrikulationsdatum, um zwischen einer Instructor-Entität und einer Student-Entität zu unterscheiden.

So ordnen Sie die Instructor-Entität und die Student-Entität zu

  1. Wenn das Fenster Zuordnungsdetails ausgeblendet ist, klicken Sie mit der rechten Maustaste auf die Designoberfläche, und klicken Sie dann auf Zuordnungsdetails.

  2. Wählen Sie den Instructor-Entitätstyp aus, und klicken Sie dann im Fenster Zuordnungsdetails auf <Tabelle oder Sicht hinzufügen>.

    Die folgende Abbildung zeigt das Dialogfeld Zuordnungsdetails - Instructor.

    Instructor-Entitätstyp auswählen und auf "Hinzufügen" klicken

    Das Feld <Tabelle oder Sicht hinzufügen> wird nun als Liste von Tabellen angezeigt, denen die ausgewählte Entität zugeordnet werden kann.

  3. Wählen Sie in der Liste Person aus.

    Das Fenster Zuordnungsdetails wird durch Standardspaltenzuordnungen und eine Option zum Hinzufügen einer Bedingung aktualisiert.

  4. Klicken Sie auf <Bedingung hinzufügen>.

    Das Feld <Bedingung hinzufügen> wird nun als Liste von Spalten angezeigt, für die Bedingungen festgelegt werden können.

  5. Wählen Sie in der Liste HireDate aus.

  6. Wählen Sie im Fenster Zuordnungsdetails in der Spalte Operator in der Liste den Eintrag Ist aus.

  7. Wählen Sie in der Spalte Eigenschaft/Wert den Eintrag Nicht Null aus.

    HinweisHinweis

    Entitätseigenschaften können nur mit einem Ist NULL-Vergleich oder Ist nicht NULL-Vergleich verwendet werden. Sie können nicht in einem Vergleich auf Gleichheit verwendet werden.

    In der folgenden Abbildung werden die fertig gestellten Zuordnungsdetails dargestellt.

    Detailzuordnung abgeschlossen
  8. Wiederholen Sie die vorhergehenden Schritte für den Student-Entitätstyp, wählen Sie jedoch die EnrollmenDate-Eigenschaft aus, und wählen Sie die Bedingung EnrollmentDate Ist nicht NULL aus.

    Die "Tabelle pro Hierarchie"-Vererbung ist jetzt implementiert.

    Die folgende Abbildung zeigt die Tabellenhierarchievererbung für die Entitäten an, die Sie erstellt haben.

    Anzeigen der Tabellenhierarchie
  9. Speichern und schließen Sie die Datei "School.edmx".

Sie können jetzt die von Ihnen erstellte Dynamic Data-Website testen.

So testen Sie die geerbten Tabellen

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Seite Default.aspx, und klicken Sie dann auf In Browser anzeigen.

    Die Seite zeigt eine Liste mit den Studenten- und Lehrkräftetabellen an, die Sie dem Datenmodell hinzugefügt haben. Die Liste enthält nicht die Personentabelle, da diese Tabelle als abstrakt markiert wurde.

  2. Klicken Sie auf die Studenten- oder Lehrkräftetabelle.

    Es wird eine Seite mit den Daten der Studenten- bzw. Lehrkräftetabelle angezeigt. Die Studententabelle enthält keine Spalte Hired und verfügt in jeder Zeile über ein Immatrikulationsdatum. Die Lehrkräftetabelle enthält keine Spalte Enrolled und verfügt in jeder Spalte über ein Einstellungsdatum.

  3. Schließen Sie den Browser.

In dieser exemplarischen Vorgehensweise haben Sie die TPH-Vererbung erfolgreich in einem EDM implementiert und das Ergebnis in einer Dynamic Data Entities-Website angezeigt. Weitere Informationen zum Definieren eines EDM mit "Tabelle pro Hierarchie"-Vererbung finden Sie unter How to: Define a Model with Table-per-Hierarchy Inheritance. Weitere Informationen zum Implementieren von Vererbung mit einem EDM finden Sie unter Inheritance (EDM).

Community-Beiträge

Anzeigen:
© 2015 Microsoft