Domanda

Ho uno schema di database legacy scritto male che sto lavorando con via EF Codice First. Attualmente sto mappatura entità POCO e vorrei creare un "indirizzo" di tipo complesso e utilizzare questo in tutto il mondo in cui le informazioni vengono memorizzate indirizzo. Purtroppo, non tutti i campi di indirizzo sono lo stesso nome nel database (es. Una tabella potrebbe avere "Indirizzo1", mentre un altro tavolo avrà "Street1", anche se si riferiscono alla stessa cosa.

C'è un modo per creare mappature personalizzate per un tipo complesso sulla base di una data entità? Che cosa significa quello sguardo mappatura come?

È stato utile?

Soluzione

Sì, è possibile ottenere che con API fluente. Ecco un esempio:

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");         
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top