Share via


Vorgehensweise: Zuordnen von Vererbungshierarchien (LINQ to SQL)

Zur Implementierung dieser Zuordnung in LINQ müssen Sie die Attribute in der Stammklasse der Vererbungshierarchie angeben. Führen Sie dazu die folgenden Schritte aus. Entwickler mit Visual Studio können Vererbungshierarchien mithilfe des O/R-Designer zuordnen.

HinweisHinweis

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 der Kennzeichnung einer Rückzugszuordnung, wenn der Diskriminatorwert aus der Datenbanktabelle mit keinem der Code-Werte in den Vererbungshierarchien übereinstimmt.

  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

HinweisHinweis

Wenn Sie Visual Studio verwenden, können Sie mit dem O/R-Designer die Vererbung konfigurieren.Weitere Informationen finden Sie unter Gewusst wie: Konfigurieren von Vererbung mit dem O/R-Designer und Vorgehensweise: Konfigurieren von Vererbung mit dem O/R-Designer und Vorgehensweise: Konfigurieren von Vererbung mit dem O/R-Designer.

Im folgenden Codebeispiel ist Vehicle als Stammklasse definiert, und die vorherigen Schritte wurden implementiert, um die Hierarchie für LINQ zu beschreiben. Die folgende Abbildung zeigt die Beziehungen.

Vererbungsdiagramm

<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
[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;
}

Siehe auch

Konzepte

Vererbungsunterstützung (LINQ to SQL)

Weitere Ressourcen

Vorgehensweise: Anpassen von Entitätsklassen mithilfe des Code-Editors (LINQ to SQL)