InheritanceMappingAttribute Osztály

Definíció

Egy LINQ-beli öröklési hierarchiát képez le SQL-alkalmazásba.

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
Öröklődés
InheritanceMappingAttribute
Attribútumok

Példák

Ez a példa egy hierarchia öröklési leképezését mutatja be, ahol a legfelső, leképezett osztály (Shape) absztrakt.

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

Az alábbi példa a nem megfeleltetett osztályok felvételét mutatja be. A leképezetlen osztályokat a hierarchiában bárhol elhelyezheti.

// 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

Megjegyzések

Az egyik InheritanceMappingAttribute megfeleltetett osztályonként van megadva.

Az öröklési hierarchiák leképezésekor vegye figyelembe a következőket:

  • A hierarchiában lévő összes osztályt egyetlen táblára kell leképezni.

  • Az öröklési hierarchia tábláját a hierarchia tetején lévő megfeleltetett típuson kell deklarálni. A felső osztályból származtatott osztályban nem adhatja meg a tábla- vagy leképezési attribútumokat.

  • A hierarchiában használhat felületet, de a LINQ nem megfelelteti.

  • Az osztályok leképezésekor kihagyhat egy osztályt a hierarchiában, de csak a leképezett osztályokra kérdezhet le.

A helyes materializáláshoz a megkülönböztető kód értékeinek egyedinek kell lenniük, és meg kell egyeznie az adatbázisban lévő értékekkel. A diszkriminatív kódértékkel rendelkező sorok, amelyek nem pontosan egyeznek (még a burkolattal sem) példányosítja az osztályt a beállított IsDefaultérték használatávaltrue.

Konstruktorok

Name Description
InheritanceMappingAttribute()

Inicializálja a InheritanceMappingAttribute osztály új példányát.

Tulajdonságok

Name Description
Code

Lekéri vagy beállítja a diszkriminatív kód értékét egy leképezett öröklési hierarchiában.

IsDefault

Lekérdezi vagy beállítja, hogy az ilyen típusú objektumok példányosítva legyenek-e, ha a diszkriminatív érték nem egyezik meg egy megadott értékkel.

Type

Lekéri vagy beállítja az osztály típusát a hierarchiában.

TypeId

Ha származtatott osztályban implementálják, ehhez egy egyedi azonosítót Attributekap.

(Öröklődés forrása Attribute)

Metódusok

Name Description
Equals(Object)

Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e egy adott objektummal.

(Öröklődés forrása Attribute)
GetHashCode()

A példány kivonatkódját adja vissza.

(Öröklődés forrása Attribute)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
IsDefaultAttribute()

Ha egy származtatott osztályban felül van bírálva, azt jelzi, hogy a példány értéke-e a származtatott osztály alapértelmezett értéke.

(Öröklődés forrása Attribute)
Match(Object)

Származtatott osztály felülírásakor egy olyan értéket ad vissza, amely jelzi, hogy ez a példány egy adott objektummal egyenlő-e.

(Öröklődés forrása Attribute)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

Explicit interfész-implementációk

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

Névkészletet képez le a küldési azonosítók megfelelő készletére.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Lekéri egy objektum típusadatait, amelyek a felület típusadatainak lekérésére használhatók.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1).

(Öröklődés forrása Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz.

(Öröklődés forrása Attribute)

A következőre érvényes: