Pregunta

Tengo un esquema de base de datos heredado mal escrito con el que estoy trabajando primero a través del código EF. Actualmente mapeo las entidades POCO y me gustaría crear un tipo complejo de "dirección" y usar esto en todas partes donde se almacena la información de la dirección de la calle. Desafortunadamente, no todos los campos de direcciones se denominan los mismos en la base de datos (es decir, una tabla podría tener "dirección1", mientras que otra tabla tendrá "street1" a pesar de que se refieren a lo mismo.

¿Hay alguna manera de crear mapeaciones personalizadas para un tipo complejo basado en una entidad determinada? ¿Cómo se ve ese mapeo?

¿Fue útil?

Solución

Sí, puede lograrlo con API fluida. Aquí hay un ejemplo:

public class User
{
    public int UserId { get; set; }   
    public Address Address { get; set; }
}

public class Customer
{
    public int CustomerId { get; set; }   
    public Address Address { get; set; }
}

[ComplexType]
public class Address
{
    public string Street { get; set; }    
    public string City { get; set; }
}

public class Context : DbContext
{    
    public DbSet<User> Users { get; set; }
    public DbSet<Customer> Customers { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {       
        modelBuilder.Entity<User>().Property(u => u.Address.Street)
                                   .HasColumnName("UserStreet");

        modelBuilder.Entity<Customer>().Property(u => u.Address.Street)
                                       .HasColumnName("CustomerStreet");         
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top