Question

J'ai un schéma de base de données existante mal écrit que je travaille avec EF via le code premier. Je cartographie actuellement des entités POCO et voudrais créer un type complexe « Adresse » et utiliser partout où des informations d'adresse de la rue est stockée. Malheureusement, tous les champs d'adresse portent le même nom dans la base de données (ie. Une table pourrait avoir « Adresse1 » tandis qu'une autre table aura « Street1 », même si elles se réfèrent à la même chose.

Y at-il un moyen de créer des mappages personnalisés pour un type complexe basé sur une entité donnée? Qu'est-ce que ce regard de la cartographie comme?

Était-ce utile?

La solution

Oui, vous pouvez y parvenir avec l'API fluide. Voici un exemple:

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");         
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top