Delen via


Procedure: Overnamehiërarchieën toewijzen

Als u overnametoewijzing in LINQ wilt implementeren, moet u de kenmerken en kenmerkeigenschappen opgeven voor de hoofdklasse van de overnamehiërarchie, zoals beschreven in de volgende stappen. Ontwikkelaars die Visual Studio gebruiken, kunnen de Object Relational Designer gebruiken om overnamehiërarchieën toe te wijzen. Zie Procedure : Overname configureren met behulp van O/R Designer.

Notitie

Er zijn geen speciale kenmerken of eigenschappen vereist voor de subklassen. Houd er rekening mee dat subklassen niet over het TableAttribute kenmerk beschikken.

Een overnamehiërarchie toewijzen

  1. Voeg het TableAttribute kenmerk toe aan de hoofdklasse.

  2. Voeg ook een InheritanceMappingAttribute kenmerk toe aan de hoofdklasse voor elke klasse in de hiërarchiestructuur.

  3. Definieer voor elk InheritanceMappingAttribute kenmerk een Code eigenschap.

    Deze eigenschap bevat een waarde die wordt weergegeven in de databasetabel in de IsDiscriminator kolom om aan te geven tot welke klasse of subklasse deze rij met gegevens behoort.

  4. Voeg voor elk InheritanceMappingAttribute kenmerk ook een Type eigenschap toe.

    Deze eigenschap bevat een waarde die aangeeft welke klasse of subklasse de sleutelwaarde aangeeft.

  5. Voeg op slechts een van de InheritanceMappingAttribute kenmerken een IsDefault eigenschap toe.

    Deze eigenschap dient om een terugvaltoewijzing aan te wijzen wanneer de discriminatorwaarde uit de databasetabel niet overeenkomt met een Code waarde in de overnametoewijzingen.

  6. Voeg een IsDiscriminator eigenschap toe voor een ColumnAttribute kenmerk.

    Deze eigenschap geeft aan dat dit de kolom is die de Code waarde bevat.

Opmerking

Notitie

Als u Visual Studio gebruikt, kunt u de Object Relational Designer gebruiken om overname te configureren. Zie Procedure: Overname configureren met behulp van O/R Designer

In het volgende codevoorbeeld Vehicle wordt gedefinieerd als de hoofdklasse en zijn de vorige stappen geïmplementeerd om de hiërarchie voor LINQ te beschrijven.

[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

Zie ook