InheritanceMappingAttribute Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
LINQ ile SQL uygulamasındaki devralma hiyerarşisini 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
- Öznitelikler
Örnekler
Bu örnek, üst, eşlenen sınıfın (Shape) soyut olduğu hiyerarşi için devralma eşlemesini gösterir.
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 eklenmesi 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 tabloya eşlenmelidir.
Devralma hiyerarşisinin 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şlenen sınıflara karşı sorgulayabilirsiniz.
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ıştırıcı kod değerine sahip bir satır, olarak ayarlayarak sınıfın IsDefault örneğini trueoluşturur.
Oluşturucular
| Name | Description |
|---|---|
| InheritanceMappingAttribute() |
InheritanceMappingAttribute sınıfının yeni bir örneğini başlatır. |
Özellikler
| Name | Description |
|---|---|
| Code |
Eşlenen devralma hiyerarşisinde ayırıcı kod değerini alır veya ayarlar. |
| IsDefault |
Ayırıcı değeri 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
| Name | Description |
|---|---|
| Equals(Object) |
Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür. (Devralındığı yer: Attribute) |
| GetHashCode() |
Bu örneğin karma kodunu döndürür. (Devralındığı yer: Attribute) |
| GetType() |
Geçerli örneğin Type 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 Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
| ToString() |
Geçerli nesneyi temsil eden bir dize döndürür. (Devralındığı yer: Object) |
Belirtik Arabirim Kullanımları
| Name | Description |
|---|---|
| _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 kullanıma sunulan özelliklere ve yöntemlere erişim sağlar. (Devralındığı yer: Attribute) |