在EF 6中,我們可以直接將EntityTypeConfiguration傳遞給模型構建器以構建映射,並使我們的配置類與上下文分離,而不會在代碼中過於冗長。

他們是否在EF核心中刪除了這些地圖。有沒有辦法在每個類的模型構建器中添加配置?

一般承認的答案

最好的方法是使配置代碼遠離OnModelCreating方法。所以你可以這樣做:

創建一個用於存儲實際配置的類:

public class ApplicationUserConfiguration
{
    public ApplicationUserConfiguration(EntityTypeBuilder<ApplicationUser> entity)
    {
        // Here you have all the good stuff
        entity.ToTable("user", "identity");

        entity.Property(p => p.Id)
            .HasColumnName("id);

        // And so on ....
    }
}

並進入OnModelCreating實例化新創建的類並傳遞正確的實體:

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

    // Your custom configs here
    new ApplicationUserConfiguration(builder.Entity<ApplicationUser>());
}

乾淨,是實現目標的簡單方法。


熱門答案

EntityFrameworkCore2.0具有IEntityTypeConfiguration<TEntity> ,可用作:

class ApplicationUserMap : IEntityTypeConfiguration<ApplicationUser>
{
  public void Configure(EntityTypeBuilder<Customer> builder)
  {
    builder.ToTable("user", "identity");

    builder.Property(p => p.Id)
        .HasColumnName("id");
     ...
   }
}

...
// OnModelCreating
modelBuilder.ApplyConfiguration(new ApplicationUserMap());


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow