2016-01-18 7 views
6

Ich bin vertraut mit der Organisation der flüssigen API-Konfigurationen in einer separaten Klasse auf EF6, aber wie wird dies mit EF7 erreicht?Entity-framework-7 Organisieren von Fluent-API-Konfigurationen in einer separaten Klasse

Hier ist ein Beispiel, wie es mit EF6 zu tun:

ModelConfigurations.cs

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

und von OnModelCreating zu nennen()

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

Auf EF7 ich das lösen kann nicht EntityTypeKonfiguration? Was ist der richtige Weg, um flüssige API-Aufrufe von einer separaten Klasse zu implementieren?

+1

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

+0

Ich empfehle Ihnen, "dnx ef dbcontext scaffold" verwenden, um Modell aus der * vorhandenen * Datenbank zu generieren (siehe [die Antwort] (http://stackoverflow.com/a/34457974/315935) für Details). Sie erhalten viele sehr gute Beispiele, wie Sie eine flüssige API in EF7 verwenden können, wenn Sie genügend komplexe Datenbanken als Quelle erhalten würden. – Oleg

Antwort

5

Try this:

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

Diese Methode funktioniert nicht mehr –

1

Was ich in der Regel tun, für alle meine Entitätsklassen ist eine statische Methode zur Verfügung stellen, die von meiner OnModelCreating Methode in meinem Zusammenhang Implementierung aufgerufen wird:

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); 
    } 
} 

Eine Stufe Außerdem können Sie den Prozess automatisieren und die Kontextklasse mithilfe von Attributen erstellen. Auf diese Weise müssen Sie nur mit den POCOs umgehen und niemals den Kontext berühren.

+0

Attribute gehen mit EF7 verloren – Szer

+0

@Szer: Quelle Ihrer Aussage? Weil ich sehe, dass Attribute/Daten Annotationen dort sein werden (https://github.com/aspnet/EntityFramework/wiki/Roadmap) –

+0

Ich bezog sich auf .NET-Attribute, keine EF-Daten Anmerkungen. –