Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Per implementare il mapping di ereditarietà in LINQ, è necessario specificare gli attributi e le proprietà degli attributi nella classe radice della gerarchia di ereditarietà, come descritto nei passaggi seguenti. Gli sviluppatori che usano Visual Studio possono usare Progettazione relazionale oggetti per eseguire il mapping delle gerarchie di ereditarietà. Consultare Procedura: configurare l'ereditarietà tramite il Designer O/R.
Annotazioni
Non sono necessari attributi o proprietà speciali nelle sottoclassi. Si noti in particolare che le sottoclassi non hanno l'attributo TableAttribute .
Mappare una gerarchia di ereditarietà
Aggiungere l'attributo TableAttribute alla classe radice.
Alla classe radice aggiungere anche un InheritanceMappingAttribute attributo per ogni classe nella struttura della gerarchia.
Per ogni InheritanceMappingAttribute attributo, definire una Code proprietà.
Questa proprietà contiene un valore visualizzato nella tabella di database nella IsDiscriminator colonna per indicare a quale classe o sottoclasse appartiene questa riga di dati.
Per ogni InheritanceMappingAttribute attributo, aggiungere anche una Type proprietà .
Questa proprietà contiene un valore che specifica la classe o la sottoclasse che indica il valore della chiave.
In un solo attributo InheritanceMappingAttribute, aggiungi una proprietà IsDefault.
Questa proprietà serve a designare un mapping di fallback quando il valore discriminatorio della tabella di database non corrisponde ad alcun Code valore nei mapping di ereditarietà.
Aggiungere una IsDiscriminator proprietà per un ColumnAttribute attributo.
Questa proprietà indica che si tratta della colonna che contiene il Code valore.
Esempio
Annotazioni
Se si usa Visual Studio, è possibile usare Progettazione relazionale oggetti per configurare l'ereditarietà. Consultare Procedura: Configurare l'ereditarietà utilizzando il Designer O/R
Nell'esempio di codice seguente viene Vehicle definito come classe radice e i passaggi precedenti sono stati implementati per descrivere la gerarchia per 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