Share via


Procedimiento para asignar jerarquías de herencia

Para implementar la asignación de herencia en LINQ debe especificar los atributos y las propiedades de atributo en la clase raíz de la jerarquía de herencia, tal como se describe en los pasos siguientes. Los desarrolladores que usan Visual Studio pueden usar el Object Relational Designer para asignar jerarquías de herencia. Consulte: Cómo configurar la herencia utilizando Object Relational Designer.

Nota

No se requieren atributos o propiedades especiales en las subclases. Observe sobre todo que las subclases no tienen el atributo TableAttribute.

Para asignar una jerarquía de herencia

  1. Agregue el atributo TableAttribute a la clase raíz.

  2. También en la clase raíz, agregue un atributo InheritanceMappingAttribute para cada clase de la estructura jerárquica.

  3. Para cada atributo InheritanceMappingAttribute, defina una propiedad Code.

    Esta propiedad contiene un valor que aparece en la tabla de base de datos, en la columna IsDiscriminator, para indicar a qué clase o subclase pertenece esta fila de datos.

  4. Para cada atributo InheritanceMappingAttribute, agregue también una propiedad Type.

    Esta propiedad contiene un valor que especifica a qué clase o subclases representa el valor de clave.

  5. En uno de los atributos InheritanceMappingAttribute, agregue una propiedad IsDefault.

    Esta propiedad sirve para designar una asignación de reserva cuando el valor de discriminador de la tabla de base de datos no coincide con ningún valor Code de las asignaciones de herencia.

  6. Agregue una propiedad IsDiscriminator para un atributo ColumnAttribute.

    Esta propiedad indica que ésta es la columna que contiene el valor Code.

Ejemplo

Nota

Si usa Visual Studio puede usar el Object Relational Designer para configurar la herencia. Consulte Cómo configurar la herencia utilizando Object Relational Designer

En el ejemplo de código siguiente, Vehicle se define como la clase raíz y se han implementado los pasos anteriores para describir la jerarquía para 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

Consulte también