簡體   English   中英

Entity-framework-7將Fluent API配置組織到一個單獨的類中

[英]Entity-framework-7 Organizing Fluent API configurations into a separate class

我很熟悉如何將流暢的API配置組織到EF6上的單獨類中,但是如何通過EF7實現這一點?

以下是如何使用EF6執行此操作的示例:

ModelConfigurations.cs

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...
    }

在EF7上,我無法解析EntityTypeConfiguration? 從單獨的類實現流暢的API調用的正確方法是什么?

試試這個:

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

我通常為所有實體類做的是提供一個靜態方法,在我的上下文實現中從我的OnModelCreating方法調用:

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

更進一步,您甚至可以使用屬性自動執行該過程並動態生成上下文類。 這樣您只需要處理POCO並且永遠不會觸及上下文。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM