2016-01-18 8 views
6

Ho familiarità su come organizzare le fluide configurazioni dell'API in una classe separata su EF6, ma come si raggiunge questo risultato con EF7?Entity-framework-7 Organizzazione delle perfette configurazioni dell'API in una classe separata

Ecco un esempio di come farlo con EF6:

ModelConfigurations.cs

public class ModelConfigurations : EntityTypeConfiguration<Blog> 
{ 
    ToTable("tbl_Blog"); 
    HasKey(c => c.Id); 
// etc.. 
} 

e chiamarlo da OnModelCreating()

protected override void OnModelCreating(DbModelbuilder modelBuilder) 
    { 
      modelBuilder.Configurations.Add(new ModelConfigurations()); 
// etc... 
    } 

Su EF7 non posso risolvere il EntityTypeConfiguration? Qual è il modo corretto di implementare fluide chiamate API da una classe separata?

+1

http://stackoverflow.com/questions/26957519/ef-7-mapping-entitytypeconfiguration –

+0

Si consiglia di utilizzare 'dnx ef dbcontext scaffold' per generare il modello dal database * esistente * (vedere [la risposta] (http://stackoverflow.com/a/34457974/315935) per i dettagli). Otterrete molti ottimi esempi su come utilizzare l'API fluente in EF7 se si ottenga un database complesso sufficiente come sorgente. – Oleg

risposta

5

Prova questo:

public class BlogConfig 
{ 
    public BlogConfig(EntityTypeBuilder<Blog> entityBuilder) 
    { 
     entityBuilder.HasKey(x => x.Id); 
     // etc.. 
    } 
} 

protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 
    base.OnModelCreating(modelBuilder); 

    new BlogConfig(modelBuilder.Entity<Blog>()); 
} 
+0

Questo metodo non funziona più –

1

Quello che di solito faccio per tutti i miei classi di entità è fornire un metodo statico che viene chiamato dal mio metodo OnModelCreating nella mia implementazione contesto:

public class EntityPOCO { 
    public int Id { get; set; } 

    public static OnModelCreating(DbModelBuilder builder) { 
     builder.HasKey<EntityPOCO>(x => x.Id); 
    } 
} 

... 

public class EntityContext : DbContext { 
    public DbSet<EntityPOCO> EntityPOCOs { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) { 
     base.OnModelCreating(modelBuilder); 
     EntityPOCO.OnModelCreating(modelBuilder); 
    } 
} 

Andando un passo inoltre, è possibile persino automatizzare il processo e generare immediatamente la classe di contesto utilizzando gli attributi. In questo modo devi solo gestire i POCO e non toccare mai il contesto.

+0

Gli attributi andranno via con EF7 – Szer

+0

@Szer: fonte della tua affermazione? Perché vedo che gli attributi/annotazioni di dati saranno lì (https://github.com/aspnet/EntityFramework/wiki/Roadmap) –

+0

Mi riferivo ad attributi .NET, nessuna annotazione di dati EF. –

Problemi correlati