Konfigurieren der Vererbung mit dem O/R-Designer
Der Objektrelationale Designer (O/R-Designer) unterstützt das häufig in relationalen Systemen implementierte Konzept der Einzeltabellenvererbung (Single-Table Inheritance). 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 Anleitungen zum Konfigurieren der Vererbung mithilfe des O/R-Designers finden Sie unter Exemplarische Vorgehensweise: Erstellen von LINQ to SQL-Klassen mithilfe der 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 Objektrelationaler Designer auf Vererbung, wählen Sie dann die Unterklasse (die umbenannte Tabelle) aus, und stellen Sie eine Verbindung mit der Basisklasse her.
Hinweis
Klicken Sie auf das Element Vererbung in der Toolbox, und lassen Sie die Maustaste los. Klicken Sie auf die zweite Kopie der in Schritt 3 erstellten Klasse, und wählen Sie dann die erste Klasse aus, 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. Wenn Sie versuchen, Objekteigenschaften zu löschen, die für Zuordnungen verwendet werden, wird eine Fehlermeldung angezeigt:
The property <property name> cannot be deleted because it is participating in the association <association name>
.Hinweis
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 Grundlagen der Vererbung (Visual Basic).
Wählen Sie im O/R-Designer die Vererbungslinie aus.
Legen Sie im Fenster Eigenschaften die Diskriminatoreigenschaft 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 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.
Zugehöriger Inhalt
- LINQ to SQL-Tools in Visual Studio
- Walkthrough: Creating LINQ to SQL classes (O-R Designer) (Exemplarische Vorgehensweise: Erstellen von LINQ to SQL-Klassen (O/R-Designer))
- Zugreifen auf Daten in Visual Studio
- LINQ to SQL
- Exemplarische Vorgehensweise: Erstellen von LINQ to SQL-Klassen mit einer Vererbung für eine einzelne Tabelle (O/R-Designer)
- Grundlagen der Vererbung (Visual Basic)
- Vererbung