Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aby zaimplementować mapowanie dziedziczenia w LINQ, należy określić atrybuty i właściwości atrybutów w klasie głównej hierarchii dziedziczenia zgodnie z opisem w poniższych krokach. Deweloperzy korzystający z programu Visual Studio mogą używać projektanta relacyjnego obiektów do mapowania hierarchii dziedziczenia. Zobacz Jak: konfigurować dziedziczenie przy użyciu projektanta O/R.
Uwaga / Notatka
W podklasach nie są wymagane żadne atrybuty specjalne ani właściwości. Należy pamiętać, że podklasy nie mają atrybutu TableAttribute .
Aby zamapować hierarchię dziedziczenia
TableAttribute Dodaj atrybut do klasy głównej.
Ponadto do klasy głównej dodaj InheritanceMappingAttribute atrybut dla każdej klasy w strukturze hierarchii.
Dla każdego InheritanceMappingAttribute atrybutu zdefiniuj Code właściwość.
Ta właściwość zawiera wartość wyświetlaną w tabeli bazy danych w kolumnie, IsDiscriminator aby wskazać, do której klasy lub podklasy należy ten wiersz danych.
Dla każdego atrybutu InheritanceMappingAttribute dodaj również właściwość Type.
Ta właściwość zawiera wartość określającą, która klasa lub podklasa oznacza wartość klucza.
Dla jednego z InheritanceMappingAttribute atrybutów dodaj IsDefault właściwość.
Ta właściwość służy do wyznaczenia mapowania zastępczego, gdy wartość dyskryminatora z tabeli bazy danych nie pasuje do żadnej wartości w mapowaniach dziedziczenia.
Dodaj właściwość IsDiscriminator dla atrybutu ColumnAttribute.
Ta właściwość oznacza, że jest to kolumna zawierająca Code wartość.
Przykład
Uwaga / Notatka
Jeśli używasz programu Visual Studio, możesz skonfigurować dziedziczenie za pomocą projektanta relacyjnego obiektów. Zobacz Instrukcje: konfigurowanie dziedziczenia przy użyciu projektanta O/R
W poniższym przykładzie Vehicle kodu zdefiniowano jako klasę główną, a poprzednie kroki zostały zaimplementowane w celu opisania hierarchii 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