Freigeben über


Anleitung: Vererbungshierarchien zuordnen

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 So konfigurieren Sie die Vererbung mit dem O/R-Designer.

Hinweis

Für die Unterklassen sind keine speziellen Attribute oder Eigenschaften erforderlich. Beachten Sie insbesondere, dass Unterklassen nicht über das TableAttribute Attribut verfügen.

Eine Vererbungshierarchie abbilden

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

  2. Fügen Sie der Stammklasse auch 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 angezeigt wird, um anzugeben, zu welcher Klasse oder Unterklasse diese Datenzeile gehört.

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

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

  5. Fügen Sie in nur einem der InheritanceMappingAttribute Attribute eine IsDefault Eigenschaft hinzu.

    Diese Eigenschaft dient zum Festlegen einer Fallbackzuordnung , 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. Siehe Vorgehensweise: Konfigurieren der Vererbung mithilfe des O/R-Designers

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