2016-01-18 20 views
6

Jestem zaznajomiony z tym, jak zorganizować płynne konfiguracje API w osobnej klasie na EF6, ale jak to się dzieje w przypadku EF7?Entity-framework-7 Porządkowanie płynnych konfiguracji API w oddzielnej klasie

Oto przykład jak to zrobić z EF6:

ModelConfigurations.cs

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

i zadzwonić z OnModelCreating()

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

Na EF7 nie mogę rozstrzygnąć EntityTypeConfiguration? Jaki jest prawidłowy sposób wdrażania płynnych wywołań API z oddzielnej klasy?

+1

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

+0

Polecam użyć 'dnx ef dbcontext scaffold' do wygenerowania Modelu z * istniejącej * bazy danych (patrz [odpowiedź] (http://stackoverflow.com/a/34457974/315935) po szczegóły). Otrzymasz wiele bardzo dobrych przykładów, jak używać płynnego API w EF7, jeśli otrzymasz wystarczająco złożoną bazę danych jako źródło. – Oleg

Odpowiedz

5

Spróbuj tego:

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

Ta metoda już nie działa –

1

Co ja zwykle zrobić dla wszystkich moich klas podmiot jest zapewnienie statycznej metody, która jest wywoływana z mojej metody OnModelCreating w moim realizacji kontekstu:

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

Idąc krok co więcej, można nawet zautomatyzować proces i wygenerować klasę kontekstu w locie za pomocą atrybutów. W ten sposób musisz poradzić sobie tylko z POCO i nigdy nie dotykać kontekstu.

+0

Atrybuty znikną z EF7 – Szer

+0

@ Szer: źródło twojego wyciągu? Ponieważ widzę, że będą tam adnotacje atrybutów/danych (https://github.com/aspnet/EntityFramework/wiki/Roadmap) –

+0

Miałem na myśli atrybuty .NET, adnotacje danych EF. –

Powiązane problemy