InheritanceMappingAttribute Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Memetakan hierarki pewarisan dalam aplikasi LINQ ke SQL.
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
- Warisan
- Atribut
Contoh
Contoh ini menunjukkan pemetaan pewarisan untuk hierarki di mana kelas teratas yang dipetakan (Shape
) abstrak.
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
Contoh berikut menunjukkan penyertaan kelas yang tidak dipetakan. Anda dapat menempatkan kelas yang belum dipetakan di mana saja dalam hierarki.
// 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
Keterangan
Satu InheritanceMappingAttribute ditentukan per kelas yang dipetakan.
Perhatikan hal berikut saat Anda memetakan hierarki pewarisan:
Semua kelas dalam hierarki harus dipetakan ke satu tabel.
Tabel untuk hierarki pewarisan harus dideklarasikan pada jenis yang dipetakan yang berada di bagian atas hierarki. Anda tidak dapat menentukan atribut tabel atau pemetaan di kelas yang berasal dari kelas atas.
Anda dapat menggunakan antarmuka dalam hierarki, tetapi LINQ tidak memetakannya.
Anda dapat melewati kelas dalam hierarki saat memetakan kelas, tetapi Anda dapat mengkueri terhadap kelas yang dipetakan saja.
Untuk materialisasi yang benar, nilai kode diskriminator harus unik dan cocok dengan nilai dalam database. Baris dengan nilai kode diskriminator yang tidak sama persis (bahkan dengan casing) membuat instans kelas dengan menggunakan IsDefault diatur ke true
.
Konstruktor
InheritanceMappingAttribute() |
Menginisialisasi instans baru kelas InheritanceMappingAttribute. |
Properti
Code |
Mendapatkan atau mengatur nilai kode diskriminator dalam hierarki pewarisan yang dipetakan. |
IsDefault |
Mendapatkan atau mengatur apakah objek jenis ini diinstansiasi ketika nilai diskriminator tidak cocok dengan nilai yang ditentukan. |
Type |
Mendapatkan atau mengatur jenis kelas dalam hierarki. |
TypeId |
Ketika diimplementasikan di kelas turunan, mendapatkan pengidentifikasi unik untuk ini Attribute. (Diperoleh dari Attribute) |
Metode
Equals(Object) |
Mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu. (Diperoleh dari Attribute) |
GetHashCode() |
Mengembalikan kode hash untuk instans ini. (Diperoleh dari Attribute) |
GetType() |
Mendapatkan instans Type saat ini. (Diperoleh dari Object) |
IsDefaultAttribute() |
Ketika ditimpa di kelas turunan, menunjukkan apakah nilai instans ini adalah nilai default untuk kelas turunan. (Diperoleh dari Attribute) |
Match(Object) |
Saat ditimpa di kelas turunan, mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu. (Diperoleh dari Attribute) |
MemberwiseClone() |
Membuat salinan dangkal dari yang saat ini Object. (Diperoleh dari Object) |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Implementasi Antarmuka Eksplisit
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Memetakan sekumpulan nama ke sekumpulan pengidentifikasi pengiriman yang sesuai. (Diperoleh dari Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Mengambil informasi jenis untuk objek, yang dapat digunakan untuk mendapatkan informasi jenis untuk antarmuka. (Diperoleh dari Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Mengambil jumlah antarmuka informasi jenis yang disediakan objek (baik 0 atau 1). (Diperoleh dari Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Menyediakan akses ke properti dan metode yang diekspos oleh objek. (Diperoleh dari Attribute) |