Frage

Ich habe ein schlecht geschriebenes Legacy -Datenbankschema, mit dem ich zuerst über EF Code arbeite. Ich greife derzeit Poco -Entitäten ab und möchte einen komplexen Typ "Adress" erstellen und diese überall verwenden, wo Straßenadresseninformationen gespeichert werden. Leider werden nicht alle Adressfelder in der Datenbank gleich genannt (dh eine Tabelle könnte "Adresse1" haben, während eine andere Tabelle "Street1" hat, obwohl sie sich auf dasselbe beziehen.

Gibt es eine Möglichkeit, benutzerdefinierte Zuordnungen für einen komplexen Typ zu erstellen, der auf einer bestimmten Entität basiert? Wie sieht diese Zuordnung aus?

War es hilfreich?

Lösung

Ja, das können Sie mit fließender API erreichen. Hier ist ein Beispiel:

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");         
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top