2016-01-18 13 views
6

流暢なAPI設定をEF6の別のクラスに編成する方法はよくわかっていますが、これはEF7でどのように達成されますか?ここでEntity-framework-7 Fluent API設定を別のクラスに編成する

はEF6でそれを行う方法の例です:

ModelConfigurations.cs EF7で

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

とOnModelCreating(からそれを呼び出すように)

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

私は解決カントEntityTypeConfiguration?別のクラスから流暢なAPI呼び出しを実装する正しい方法は何ですか?

+1

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

+0

*既存の*データベースからModelを生成するには、 'dnx ef dbcontext scaffold'を使用することをお勧めします([the answer](詳細については、http://stackoverflow.com/a/34457974/315935を参照してください)。あなたはソースとして十分な複雑なデータベースを取得する場合、EF7で流暢なAPIを使用する方法を非常に良い例がたくさんあります。 – Oleg

答えて

5

これを試してみてください:

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

ステップを行く:

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

このメソッドはこれ以上動作しません –

1

は、私は通常、すべての私のエンティティ・クラスのためにやっていることは私のコンテキスト実装に私のOnModelCreatingメソッドから呼び出される静的なメソッドを提供していますさらに、プロセスを自動化し、属性を使用してオンザフライでコンテキストクラスを生成することさえできます。この方法では、POCOに対処してコンテキストに触れることはありません。

+0

属性はEF7になります – Szer

+0

@Szer:あなたのステートメントのソース?属性/データ注釈がそこにあることがわかっているので(https://github.com/aspnet/EntityFramework/wiki/Roadmap) –

+0

私は.NET属性を指していましたが、EFデータ注釈はありませんでした。 –

関連する問題