Anvisningar: Mappa arvshierarkier
Om du vill implementera arvsmappning i LINQ måste du ange attribut och attributegenskaper i rotklassen i arvshierarkin enligt beskrivningen i följande steg. Utvecklare som använder Visual Studio kan använda Objektrelationsdesignern för att mappa arvshierarkier. Se Så här: Konfigurera arv med hjälp av O/R Designer.
Kommentar
Inga särskilda attribut eller egenskaper krävs för underklasserna. Observera särskilt att underklasser inte har attributet TableAttribute .
Mappa en arvshierarki
TableAttribute Lägg till attributet i rotklassen.
Lägg även till ett InheritanceMappingAttribute attribut för varje klass i hierarkistrukturen i rotklassen.
Definiera en Code egenskap för varje InheritanceMappingAttribute attribut.
Den här egenskapen innehåller ett värde som visas i databastabellen IsDiscriminator i kolumnen för att ange vilken klass eller underklass den här dataraden tillhör.
Lägg även till en Type egenskap för varje InheritanceMappingAttribute attribut.
Den här egenskapen innehåller ett värde som anger vilken klass eller underklass nyckelvärdet betyder.
Lägg bara till en IsDefault egenskap på ett av attributenInheritanceMappingAttribute.
Den här egenskapen används för att ange en reservmappning när det diskriminerande värdet från databastabellen inte matchar något Code värde i arvsmappningarna.
Lägg till en IsDiscriminator egenskap för ett ColumnAttribute attribut.
Den här egenskapen betyder att det här är kolumnen som innehåller Code värdet.
Exempel
Kommentar
Om du använder Visual Studio kan du använda objektrelationsdesignern för att konfigurera arv. Se Så här konfigurerar du arv med hjälp av O/R Designer
I följande kodexempel Vehicle
definieras som rotklassen och de föregående stegen har implementerats för att beskriva hierarkin för LINQ.
[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