[Entity Framework][Code First] Herencia - Tabla por tipo - Table per Type (TPT) http://ltuttini.blogspot.com.ar/
Introducción
Analizaremos un modelo de herencia el cual permite definir una tabla para cada tipo concreto. Eneste caso la relación entre las tablas define el tipo de instancia de la entidad.
El modelo utilizado en este artículo es idéntico al anterior:
[Entity Framework][Code First] Herencia - Tablapor jerarquía - Table per Hierarchy (TPH)
Definición del modelo
Modelaremos la entidad empleado y sus derivados que representan al personal externo y el contratado por la compañía.Partiremos de un modelo de clases como el siguiente:
image
y obtendremos un modelo de tablas
image
en donde cada la clase base estará en una tabla mientras que los derivados, con susatributos particulares, en otras distintas.
En este caso la relación entre las tablas define el tipo, a diferencia del modelo TPH (Tabla por jerarquía) en donde un campo era quien lo indicaba.Definición del Mapping
Se va a necesitar definir en que tabla se persiste cada tipo especifico, es por ello que se requiere una clase de mapping para cada derivado que herede de la base.public class NorthWindContext : DbContext
{
public NorthWindContext()
: base("NorthwindDb")
{
this.Configuration.LazyLoadingEnabled = false;
this.Configuration.ProxyCreationEnabled = false;
}public DbSet Employees { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new EmployeeMap());modelBuilder.Configurations.Add(new EmployeeInternalMap());
modelBuilder.Configurations.Add(new EmployeeExternalMap());
base.OnModelCreating(modelBuilder);
}
}
public class EmployeeMap : EntityTypeConfiguration{
public EmployeeMap()
{
HasKey(x => x.EmployeeID);
Property(x => x.LastName).HasMaxLength(20).IsRequired();
Property(x => x.FirstName).HasMaxLength(10).IsRequired();
Property(x =>...
Regístrate para leer el documento completo.