InheritanceMappingAttribute Klasse

Definition

Ordnet eine Vererbungshierarchie in einer LINQ to SQL-Anwendung zu.

public ref class InheritanceMappingAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Class, AllowMultiple=true, Inherited=false)]
public sealed class InheritanceMappingAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Class, AllowMultiple=true, Inherited=false)>]
type InheritanceMappingAttribute = class
    inherit Attribute
Public NotInheritable Class InheritanceMappingAttribute
Inherits Attribute
Vererbung
InheritanceMappingAttribute
Attribute

Beispiele

Dieses Beispiel zeigt die Vererbungszuordnung für eine Hierarchie, in der die oberste zugeordnete Klasse (Shape) abstrakt ist.

public enum ShapeType
{
    Square = 0, Circle = 1
}
[Table(Name = "Shape")]
[InheritanceMapping(Code = ShapeType.Square, Type = typeof(Square),
    IsDefault = true)]
[InheritanceMapping(Code = ShapeType.Circle, Type = typeof(Circle))]

abstract public class Shape
{
    [Column(IsDiscriminator = true)]
    public ShapeType ShapeType = 0;
}

public class Square : Shape
{
    [Column]
    public int Side = 0;
}
public class Circle : Shape
{
    [Column]
    public int Radius = 0;
}
Public Enum ShapeType As Integer
    Square = 0
    Circle = 1
End Enum

<Table(Name:="Shape")> _
<InheritanceMapping(Code:=ShapeType.Square, Type:=GetType(Square), _
    IsDefault:=True)> _
<InheritanceMapping(Code:=ShapeType.Circle, Type:=GetType(Circle))> _
Public MustInherit Class Shape
    <Column(IsDiscriminator:=True)> _
        Public ShapeType As ShapeType = 0
End Class

Public Class Square
    Inherits Shape
    <Column()> _
    Public Side As Integer = 0
End Class

Public Class Circle
    Inherits Shape
    <Column()> _
    Public Radius As Integer = 0
End Class

Das folgende Beispiel zeigt die Aufnahme nicht zugeordneter Klassen. Sie können nicht zugeordnete Klassen an einer beliebigen Stelle in der Hierarchie platzieren.

// Unmapped and not queryable.
class A {  }

// Mapped and queryable.
[Table]
[InheritanceMapping(Code = "B", Type = typeof(B),
IsDefault = true)]
[InheritanceMapping(Code = "D", Type = typeof(D))]
class B: A {  }

// Unmapped and not queryable.
class C: B {  }

// Mapped and queryable.
class D: C {  }

// Unmapped and not queryable.
class E: D {  }
' Unmapped and not queryable.
Class A
End Class

' Mapped and queryable.
<Table()> _
<InheritanceMapping(Code:="B", Type:=GetType(B), _
IsDefault:=True)> _
<InheritanceMapping(Code:="D", Type:=GetType(D))> _
Class B
    Inherits A
End Class

' Unmapped and not queryable.
Class C
    Inherits B
End Class

' Mapped and queryable.
Class D
    Inherits C
End Class

' Unmapped and not queryable.
Class E
    Inherits D
End Class

Hinweise

Eine InheritanceMappingAttribute wird pro zugeordnete Klasse angegeben.

Beachten Sie Folgendes, wenn Sie Vererbungshierarchien zuordnen:

  • Alle Klassen in einer Hierarchie müssen einer einzelnen Tabelle zugeordnet werden.

  • Die Tabelle für eine Vererbungshierarchie muss für den zugeordneten Typ deklariert werden, der sich oben in der Hierarchie befindet. Sie können die Tabellen- oder Zuordnungsattribute nicht in einer Klasse angeben, die von der obersten Klasse abgeleitet wird.

  • Sie können eine Schnittstelle in einer Hierarchie verwenden, aber LINQ zuordnen sie nicht.

  • Sie können eine Klasse in der Hierarchie überspringen, wenn Sie Klassen zuordnen, aber Sie können nur zugeordnete Klassen abfragen.

Für die korrekte Materialisierung müssen Diskriminatorcodewerte eindeutig sein und den Werten in der Datenbank entsprechen. Eine Zeile mit einem Diskriminator-Codewert, der nicht genau übereinstimmt (auch durch Groß-/Kleinschreibung), instanziiert die Klasse mithilfe von IsDefault Set auf true.

Konstruktoren

Name Beschreibung
InheritanceMappingAttribute()

Initialisiert eine neue Instanz der InheritanceMappingAttribute-Klasse.

Eigenschaften

Name Beschreibung
Code

Dient zum Abrufen oder Festlegen des Diskriminatorcodewerts in einer zugeordneten Vererbungshierarchie.

IsDefault

Ruft ab oder legt fest, ob ein Objekt dieses Typs instanziiert wird, wenn der Diskriminatorwert nicht mit einem angegebenen Wert übereinstimmt.

Type

Dient zum Abrufen oder Festlegen des Typs der Klasse in der Hierarchie.

TypeId

Wenn sie in einer abgeleiteten Klasse implementiert wird, wird ein eindeutiger Bezeichner für diese Attribute.

(Geerbt von Attribute)

Methoden

Name Beschreibung
Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz einem angegebenen Objekt entspricht.

(Geerbt von Attribute)
GetHashCode()

Gibt den Hashcode für diesen instance zurück.

(Geerbt von Attribute)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
IsDefaultAttribute()

Wenn sie in einer abgeleiteten Klasse überschrieben wird, gibt an, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist.

(Geerbt von Attribute)
Match(Object)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem angegebenen Objekt entspricht.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

Name Beschreibung
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.

(Geerbt von Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit denen die Typinformationen für eine Schnittstelle abgerufen werden können.

(Geerbt von Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).

(Geerbt von Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Bietet Zugriff auf Eigenschaften und Methoden, die von einem Objekt verfügbar gemacht werden.

(Geerbt von Attribute)

Gilt für: