Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Para implementar o mapeamento de herança no LINQ, deve especificar os atributos e propriedades de atributos na classe raiz da hierarquia de herança, conforme descrito nos passos seguintes. Os programadores que usam o Visual Studio podem usar o Object Relational Designer para mapear hierarquias de herança. Veja como: Configurar a herança usando o O/R Designer.
Observação
Não são necessários atributos ou propriedades especiais nas subclasses. Note-se especialmente que as subclasses não têm esse TableAttribute atributo.
Para mapear uma hierarquia de herança
Adicione o TableAttribute atributo à classe raiz.
Também à classe raiz, adiciona um InheritanceMappingAttribute atributo para cada classe na estrutura hierárquica.
Para cada InheritanceMappingAttribute atributo, define-se uma Code propriedade.
Esta propriedade contém um valor que aparece na tabela da base de dados na IsDiscriminator coluna para indicar a que classe ou subclasse pertence esta linha de dados.
Para cada InheritanceMappingAttribute atributo, adiciona também uma Type propriedade.
Esta propriedade detém um valor que especifica qual classe ou subclasse o valor-chave significa.
Só num dos InheritanceMappingAttribute atributos, adiciona uma IsDefault propriedade.
Esta propriedade serve para designar um mapeamento alternativo quando o valor do discriminador da tabela da base de dados não corresponde a nenhum valor Code nos mapeamentos de herança.
Adicione uma IsDiscriminator propriedade para um ColumnAttribute atributo.
Esta propriedade indica que esta é a coluna que detém o Code valor.
Exemplo
Observação
Se estiveres a usar o Visual Studio, podes usar o Object Relational Designer para configurar a herança. Veja como: Configurar a herança usando o O/R Designer
No exemplo de código seguinte, Vehicle é definido como a classe raiz, e os passos anteriores foram implementados para descrever a hierarquia do LINQ.
[Table]
[InheritanceMapping(Code = "C", Type = typeof(Car))]
[InheritanceMapping(Code = "T", Type = typeof(Truck))]
[InheritanceMapping(Code = "V", Type = typeof(Vehicle),
IsDefault = true)]
public class Vehicle
{
[Column(IsDiscriminator = true)]
public string DiscKey;
[Column(IsPrimaryKey = true)]
public string VIN;
[Column]
public string MfgPlant;
}
public class Car : Vehicle
{
[Column]
public int TrimCode;
[Column]
public string ModelName;
}
public class Truck : Vehicle
{
[Column]
public int Tonnage;
[Column]
public int Axles;
}
<Table()> _
<InheritanceMapping(Code:="C", Type:=GetType(Car))> _
<InheritanceMapping(Code:="T", Type:=GetType(Truck))> _
<InheritanceMapping(Code:="V", Type:=GetType(Vehicle), _
IsDefault:=True)> _
Public Class Vehicle
<Column(IsDiscriminator:=True)> _
Private DiscKey As String
<Column(IsPrimaryKey:=True)> _
Private VIN As String
<Column()> _
Private MfgPlant As String
End Class
Public Class Car
Inherits Vehicle
<Column()> _
Private TrimCode As Integer
<Column()> _
Private ModelName As String
End Class
Public Class Truck
Inherits Vehicle
<Column()> _
Private Tonnage As Integer
<Column()> _
Private Axles As Integer
End Class