Aracılığıyla paylaş


InheritanceMappingAttribute Sınıf

Tanım

bir LINQ to SQL uygulamasında devralma hiyerarşisi eşler.

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
Devralma
InheritanceMappingAttribute
Öznitelikler

Örnekler

Bu örnekte, üst, eşlenen sınıfın (Shape) soyut olduğu bir hiyerarşi için devralma eşlemesi gösterilir.

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

Aşağıdaki örnekte eşlenmemiş sınıfların dahil edilmesi gösterilmektedir. Eşlenmemiş sınıfları hiyerarşinin herhangi bir yerine yerleştirebilirsiniz.

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

Açıklamalar

Eşlenen sınıf başına bir InheritanceMappingAttribute tane belirtilir.

Devralma hiyerarşilerini eşlerken aşağıdakilere dikkat edin:

  • Hiyerarşideki tüm sınıflar tek bir tabloyla eşlenmelidir.

  • Devralma hiyerarşisi tablosu, hiyerarşinin en üstündeki eşlenmiş türde bildirilmelidir. Üst sınıftan türetilen bir sınıfta tablo veya eşleme özniteliklerini belirtemezsiniz.

  • Hiyerarşide bir arabirim kullanabilirsiniz, ancak LINQ bunu eşlemez.

  • Sınıfları eşlerken hiyerarşideki bir sınıfı atlayabilirsiniz, ancak yalnızca eşlenmiş sınıflara karşı sorgu yapabilirsiniz.

Doğru gerçekleştirme için ayrımcı kod değerlerinin benzersiz olması ve veritabanındaki değerlerle eşleşmesi gerekir. Tam olarak eşleşmeyen (büyük/küçük harfle bile) ayrımcı kod değerine sahip bir satır, olarak ayarlayarak sınıfın IsDefault örneğini trueoluşturur.

Oluşturucular

InheritanceMappingAttribute()

InheritanceMappingAttribute sınıfının yeni bir örneğini başlatır.

Özellikler

Code

Eşlenen devralma hiyerarşisindeki ayrımcı kod değerini alır veya ayarlar.

IsDefault

Ayırıcı değer belirtilen bir değerle eşleşmediğinde bu türdeki bir nesnenin örneği oluşturulurken alır veya ayarlar.

Type

Hiyerarşideki sınıfın türünü alır veya ayarlar.

TypeId

Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır.

(Devralındığı yer: Attribute)

Yöntemler

Equals(Object)

Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değeri döndürür.

(Devralındığı yer: Attribute)
GetHashCode()

Bu örneğe ilişkin karma kodu döndürür.

(Devralındığı yer: Attribute)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
IsDefaultAttribute()

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir.

(Devralındığı yer: Attribute)
Match(Object)

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür.

(Devralındığı yer: Attribute)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

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

Bir ad kümesini karşılık gelen bir dağıtma tanımlayıcısı kümesine eşler.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Bir arabirimin tür bilgilerini almak için kullanılabilecek bir nesnenin tür bilgilerini alır.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 ya da 1).

(Devralındığı yer: Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Bir nesne tarafından sunulan özelliklere ve yöntemlere erişim sağlar.

(Devralındığı yer: Attribute)

Şunlara uygulanır