2012-03-29 19 views
6

Ho un'entità in quadro codice prima entità che attualmente appare così:Entity Framework - riutilizzo Tipo Complesso

public class Entity 
{ 
    // snip ... 

    public string OriginalDepartment { get; set; } 
    public string OriginalQueue { get; set; } 

    public string CurrentDepartment { get; set; } 
    public string CurrentQueue { get; set; } 
} 

vorrei creare tipo complesso per questi tipi come qualcosa di simile a questo:

public class Location 
{ 
    public string Department { get; set; } 
    public string Queue { get; set; } 
} 

mi piacerebbe usare questo stesso tipo sia attuale e originale:

public Location Original { get; set; } 
public Location Current { get; set; } 

questo è possibile, o fare Devo creare due tipi complessi CurrentLocation e OriginalLocation?

risposta

7

È supportato out of box, non è necessario creare due tipi complessi.

È anche possibile configurare i tipi di complessi esplicitamente con modellista

modelBuilder.ComplexType<Location>(); 

Per personalizzare i nomi delle colonne, è necessario configurare dal genitore configurazione entità

public class Location 
{ 
    public string Department { get; set; } 
    public string Queue { get; set; } 
} 

public class MyEntity 
{ 
    public int Id { get; set; } 
    public Location Original { get; set; } 
    public Location Current { get; set; } 
} 

public class MyDbContext : DbContext 
{ 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.ComplexType<Location>(); 

     modelBuilder.Entity<MyEntity>().Property(x => x.Current.Queue).HasColumnName("myCustomColumnName"); 
    } 
} 

Ciò mappare MyEntity.Current.Queue-myCustomName colonna

+0

Immagino di non essere sicuro di come sia supportato fuori dagli schemi. La classe 'ComplexTypeConfiguration ' ha un metodo 'Property()' che mi sta chiedendo di specificare un nome di colonna. Il nome della colonna sarà diverso per ciascuno. – Dismissile

+0

Immagino che dovrei chiarire che voglio essere in grado di personalizzare i nomi delle colonne per entrambi i tipi complessi. È supportato? – Dismissile

+0

Vuoi che siano solo prefissati in modo diverso o completamente personalizzati? – archil

Problemi correlati