InheritanceMappingAttribute Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Mapeia uma hierarquia de herança em um aplicativo LINQ to 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
- Herança
- Atributos
Exemplos
Este exemplo mostra o mapeamento de herança para uma hierarquia em que a classe superior mapeada (Shape) é abstrata.
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
O exemplo a seguir mostra a inclusão de classes não mapeadas. Você pode colocar classes não mapeadas em qualquer lugar na hierarquia.
// 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
Comentários
Uma InheritanceMappingAttribute é especificada por classe mapeada.
Observe o seguinte quando você mapeia hierarquias de herança:
Todas as classes em uma hierarquia devem ser mapeadas para uma única tabela.
A tabela de uma hierarquia de herança deve ser declarada no tipo mapeado que está na parte superior da hierarquia. Não é possível especificar a tabela ou os atributos de mapeamento em uma classe derivada da classe superior.
Você pode usar uma interface em uma hierarquia, mas o LINQ não a mapeia.
Você pode ignorar uma classe na hierarquia ao mapear classes, mas pode consultar somente classes mapeadas.
Para a materialização correta, os valores de código discriminatórios devem ser exclusivos e corresponder aos valores no banco de dados. Uma linha com um valor de código discriminatório que não corresponde exatamente (mesmo por casing) cria uma instância da classe usando IsDefault set to true.
Construtores
| Nome | Description |
|---|---|
| InheritanceMappingAttribute() |
Inicializa uma nova instância da classe InheritanceMappingAttribute. |
Propriedades
| Nome | Description |
|---|---|
| Code |
Obtém ou define o valor de código discriminatório em uma hierarquia de herança mapeada. |
| IsDefault |
Obtém ou define se um objeto desse tipo é instanciado quando o valor discriminatório não corresponde a um valor especificado. |
| Type |
Obtém ou define o tipo da classe na hierarquia. |
| TypeId |
Quando implementado em uma classe derivada, obtém um identificador exclusivo para esse Attribute. (Herdado de Attribute) |
Métodos
| Nome | Description |
|---|---|
| Equals(Object) |
Retorna um valor que indica se essa instância é igual a um objeto especificado. (Herdado de Attribute) |
| GetHashCode() |
Devolve o código hash para esta instância. (Herdado de Attribute) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| IsDefaultAttribute() |
Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada. (Herdado de Attribute) |
| Match(Object) |
Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado. (Herdado de Attribute) |
| MemberwiseClone() |
Cria uma cópia superficial do Objectatual. (Herdado de Object) |
| ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
Implantações explícitas de interface
| Nome | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição. (Herdado de Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera as informações de tipo de um objeto, que podem ser usadas para obter as informações de tipo de uma interface. (Herdado de Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1). (Herdado de Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Fornece acesso a propriedades e métodos expostos por um objeto. (Herdado de Attribute) |