Vorgehensweise: Zuordnen von Vererbungshierarchien

Um die Vererbungszuordnung in LINQ zu implementieren, müssen Sie die Attribute und Attributeigenschaften für die Stammklasse der Vererbungshierarchie angeben, wie in den folgenden Schritten beschrieben. Entwickler, die Visual Studio verwenden, können den objektrelationalen Designer verwenden, um Vererbungshierarchien zuzuordnen. Weitere Informationen finden Sie unter Vorgehensweise: Konfigurieren der Vererbung mit dem O/R-Designer.

Hinweis

Für Unterklassen sind keine besonderen Attribute oder Eigenschaften erforderlich. Beachten Sie besonders, dass Unterklassen nicht über das TableAttribute-Attribut verfügen.

So ordnen Sie eine Vererbungshierarchie zu

  1. Fügen Sie der Stammklasse das TableAttribute-Attribut hinzu.

  2. Fügen Sie der Stammklasse ein InheritanceMappingAttribute-Attribut für jede Klasse in der Hierarchiestruktur hinzu.

  3. Definieren Sie für jedes InheritanceMappingAttribute-Attribut eine Code-Eigenschaft.

    Diese Eigenschaft enthält einen Wert, der in der Datenbanktabelle in der IsDiscriminator-Spalte erscheint, um anzugeben, zu welcher Klasse oder Unterklasse diese Datenzeile gehört.

  4. Fügen Sie auch für jedes InheritanceMappingAttribute-Attribut eine Type-Eigenschaft hinzu.

    Diese Eigenschaft enthält einen Wert, der angibt, welche Klasse oder Unterklasse der Schlüsselwert darstellt.

  5. Fügen Sie nur für eines der InheritanceMappingAttribute-Attribute eine IsDefault-Eigenschaft hinzu.

    Diese Eigenschaft dient zum Festlegen einer Fallback-Zuordnung, wenn der Diskriminatorwert aus der Datenbanktabelle keinem Code Wert in den Vererbungszuordnungen entspricht.

  6. Fügen Sie eine IsDiscriminator-Eigenschaft für ein ColumnAttribute-Attribut hinzu.

    Diese Eigenschaft gibt an, dass dies die Spalte ist, die den Code-Wert enthält.

Beispiel

Hinweis

Wenn Sie Visual Studio verwenden, können Sie den objektrelationalen Designer verwenden, um die Vererbung zu konfigurieren. Weitere Informationen finden Sie unter Vorgehensweise: Konfigurieren der Vererbung mit dem O/R-Designer

Im folgenden Codebeispiel wird Vehicle als Stammklasse definiert, und die vorherigen Schritte wurden implementiert, um die Hierarchie für LINQ zu beschreiben.

[Table]
[InheritanceMapping(Code = "C", Type = typeof(Car))]
[InheritanceMapping(Code = "T", Type = typeof(Truck))]
[InheritanceMapping(Code = "V", Type = typeof(Vehicle),
    IsDefault = true)]
public class Vehicle
{
    [Column(IsDiscriminator = true)]
    public string DiscKey;
    [Column(IsPrimaryKey = true)]
    public string VIN;
    [Column]
    public string MfgPlant;
}
public class Car : Vehicle
{
    [Column]
    public int TrimCode;
    [Column]
    public string ModelName;
}

public class Truck : Vehicle
{
    [Column]
    public int Tonnage;
    [Column]
    public int Axles;
}
<Table()> _
<InheritanceMapping(Code:="C", Type:=GetType(Car))> _
<InheritanceMapping(Code:="T", Type:=GetType(Truck))> _
<InheritanceMapping(Code:="V", Type:=GetType(Vehicle), _
    IsDefault:=True)> _
Public Class Vehicle
    <Column(IsDiscriminator:=True)> _
    Private DiscKey As String
    <Column(IsPrimaryKey:=True)> _
    Private VIN As String
    <Column()> _
    Private MfgPlant As String
End Class

Public Class Car
    Inherits Vehicle
    <Column()> _
    Private TrimCode As Integer
    <Column()> _
    Private ModelName As String
End Class

Public Class Truck
    Inherits Vehicle
    <Column()> _
    Private Tonnage As Integer
    <Column()> _
    Private Axles As Integer
End Class

Siehe auch