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
Voeg het TableAttribute kenmerk toe aan de hoofdklasse.
Voeg ook een InheritanceMappingAttribute kenmerk toe aan de hoofdklasse voor elke klasse in de hiërarchiestructuur.
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.
Voeg voor elk InheritanceMappingAttribute kenmerk ook een Type eigenschap toe.
Deze eigenschap bevat een waarde die aangeeft welke klasse of subklasse de sleutelwaarde aangeeft.
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.
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