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 Einbeziehung von nicht zugeordneten 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

Pro zugeordneter Klasse wird ein InheritanceMappingAttribute Wert 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 ist.

  • 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 eine korrekte Materialisierung müssen die Werte des Diskriminatorcodes eindeutig sein und mit den Werten in der Datenbank übereinstimmen. Eine Zeile mit einem Diskriminatorcodewert, der nicht genau übereinstimmt (auch durch Groß- und Kleinschreibung), instanziiert die -Klasse, IsDefault indem auf truefestgelegt wird.

Konstruktoren

InheritanceMappingAttribute()

Initialisiert eine neue Instanz der InheritanceMappingAttribute-Klasse.

Eigenschaften

Code

Ruft den Diskriminatorcodewert in einer zugeordneten Vererbungshierarchie ab oder legt diesen fest.

IsDefault

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

Type

Ruft den Typ der Klasse in der Hierarchie ab oder legt diesen fest.

TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.

(Geerbt von Attribute)

Methoden

Equals(Object)

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

(Geerbt von Attribute)
GetHashCode()

Gibt den Hashcode für diese Instanz zurück.

(Geerbt von Attribute)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
IsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.

(Geerbt von Attribute)
Match(Object)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

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

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

_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 deren Hilfe 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)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.

(Geerbt von Attribute)

Gilt für: