Vorgehensweise: Konfigurieren von Vererbung mit dem O/R-Designer
Der O/R-Designer (O/R-Designer) unterstützt das häufig in relationalen Systemen implementierte Konzept der Vererbung einer einzelnen Tabelle. Bei der Vererbung einer einzelnen Tabelle gibt es eine einzelne Datenbanktabelle, die Felder sowohl für übergeordnete Informationen als auch für untergeordnete Informationen enthält. Bei relationalen Daten enthält eine Unterscheidungsspalte den Wert, der festlegt, zu welcher Klasse ein bestimmter Datensatz gehört.
Betrachten Sie beispielsweise die Tabelle "Persons", die alle in einem Unternehmen beschäftigten Personen enthält. Einige Personen sind Mitarbeiter, andere Führungskräfte. Die Tabelle "Persons" enthält die Spalte EmployeeType, die für Führungskräfte den Wert 1 und für Mitarbeiter den Wert 2 enthält. Diese Spalte dient als Unterscheidungsspalte. In diesem Szenario können Sie eine Unterklasse von Mitarbeitern erstellen und die Klasse nur mit Datensätzen füllen, die einen EmployeeType-Wert von 2 aufweisen. Sie können aus der jeweiligen Klasse auch die nicht zutreffenden Spalten entfernen.
Das Erstellen eines Objektmodells, das Vererbung verwendet (und sich auf relationale Daten bezieht), kann etwas verwirrend sein. Im folgenden Verfahren werden die erforderlichen Schritte zum Konfigurieren von Vererbung mit dem O/R-Designer dargestellt. Da es möglicherweise schwierig ist, generische Schritte nachzuvollziehen, ohne sich auf eine vorhandene Tabelle und die zugehörigen Spalten zu beziehen, wird auch eine exemplarische Vorgehensweise zur Verfügung gestellt, in der echte Daten verwendet werden. Ausführliche Schritt-für-Schritt-Anleitungen zur Konfiguration von Vererbung mit dem O/R-Designer finden Sie unter Exemplarische Vorgehensweise: Erstellen von LINQ to SQL-Klassen mithilfe von Vererbung einer einzelnen Tabelle (O/R-Designer).
So erstellen Sie geerbte Datenklassen
Öffnen Sie den O/R-Designer, indem Sie einem vorhandenen Visual Basic- oder C#-Projekt ein LINQ to SQL-Klassen-Element hinzufügen.
Ziehen Sie die Tabelle, die Sie als Basisklasse verwenden möchten, auf den O/R-Designer.
Ziehen Sie eine zweite Kopie der Tabelle auf den O/R-Designer, und benennen Sie sie um. Sie dient als abgeleitete Klasse bzw. Unterklasse.
Klicken Sie in der Toolbox auf der Registerkarte O/R-Designer auf Vererbung, klicken Sie dann auf die Unterklasse (die umbenannte Tabelle), und stellen Sie eine Verbindung mit der Basisklasse her.
Tipp
Klicken Sie in der Toolbox auf das Element Vererbung, und lassen Sie die Maustaste los. Klicken Sie auf die zweite Kopie der in Schritt 3 erstellten Klasse, und klicken Sie dann auf die erste Klasse, die Sie in Schritt 2 erstellt haben. Der Pfeil der Vererbungslinie zeigt dann auf die erste Klasse.
Löschen Sie in jeder Klasse die Objekteigenschaften, die nicht angezeigt werden sollen und die nicht für Zuordnungen verwendet werden. Der Versuch, für Zuordnungen verwendete Objekteigenschaften zu löschen, führt zu einem Fehler: Die <Eigenschaftenname>-Eigenschaft kann nicht gelöscht werden, weil sie an der Zuordnung <Zuordnungsname> teilnimmt.
Tipp
Da eine abgeleitete Klasse die in der Basisklasse definierten Eigenschaften erbt, dürfen in den Klassen nicht dieselben Spalten definiert sein. (Spalten werden als Eigenschaften implementiert.) Sie können die Erstellung von Spalten in der abgeleiteten Klasse ermöglichen, indem Sie in der Basisklasse den Vererbungsmodifizierer für die entsprechende Eigenschaft festlegen. Weitere Informationen finden Sie unter Overriding Properties and Methods.
Wählen Sie im O/R-Designer die Vererbungslinie aus.
Legen Sie im Fenster Eigenschaften die Unterscheidungseigenschaft auf den Namen der Spalte fest, anhand der die Datensätze in den Klassen unterschieden werden.
Legen Sie die Eigenschaft Abgeleiteter Klassendiskriminatorwert auf den Wert in der Datenbank fest, der den Datensatz als den geerbten Typ kennzeichnet. (Dies ist der Wert, der in der Unterscheidungsspalte gespeichert und mit dem die geerbte Klasse gekennzeichnet wird.)
Legen Sie die Eigenschaft Basisklassen-Diskriminatorwert auf den Wert fest, der den Datensatz als Basistyp kennzeichnet. (Dies ist der eigentliche Wert, der in der Unterscheidungsspalte gespeichert und mit dem die Basisklasse gekennzeichnet wird.)
Wahlweise können Sie auch die Eigenschaft Vererbungsstandard festlegen, um in einer Vererbungshierarchie einen Typ zu kennzeichnen, der beim Laden von Spalten verwendet wird, die keinem definierten Vererbungscode entsprechen. Mit anderen Worten: Wenn ein Datensatz in der Unterscheidungsspalte einen Wert enthält, der keinem der Werte in den Eigenschaften Abgeleiteter Klassendiskriminatorwert oder Basisklassen-Diskriminatorwert entspricht, wird der Datensatz in den als Vererbungsstandard gekennzeichneten Typ geladen.
Siehe auch
Aufgaben
Exemplarische Vorgehensweise: Erstellen von LINQ to SQL-Klassen (O/R-Designer)
Referenz
Vererbung (C#-Programmierhandbuch)
Konzepte
Übersicht über den O/R-Designer
Neues in der Datenanwendungsentwicklung