Entity Frameworkのコア構成

asp.net-core entity-framework entity-framework-core

質問

EF 6では、モデルビルダーにEntityTypeConfigurationを直接渡してマップを構築し、コードであまり冗長でなくてもコンフィギュアクラスとコンテキストを分離しておくことができます。

彼らはEFコアの地図を削除しましたか?モデルビルダーで各クラスの設定を行わずに設定を追加する方法はありますか?

受け入れられた回答

最善の方法は、構成コードをOnModelCreatingメソッドから離して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
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ