2
EF Core 2.0では、クリーナーFluent APIマッピング(source)のためにIEntityTypeConfiguration
から派生する機能があります。ベースエンティティでIEntityTypeConfigurationを使用する
基本エンティティを利用するためにこのパターンを拡張するにはどうすればよいですか?下の例では、BaseEntityConfiguration
をLanguageConfiguration
とMaintainerConfiguration
に複製し、BaseEntity
にあるプロパティを変更するにはどうすればよいですか?BaseEntityConfiguration
?そのようなBaseEntityConfiguration
はどのように見えるでしょうか? OnModelCreating()
であれば、それはどのように使用されますか?この例の最後にあるTODOコードを参照してください。
例:このような
public abstract class BaseEntity
{
public long Id { get; set; }
public DateTime CreatedDateUtc { get; set; }
public DateTime? ModifiedDateUtc { get; set; }
}
public class Language : BaseEntity
{
public string Iso6392 { get; set; }
public string LocalName { get; set; }
public string Name { get; set; }
}
public class Maintainer : BaseEntity
{
public string Email { get; set; }
public string Name { get; set; }
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
//TODO: Possibly add something like BaseEntityConfiguration?
modelBuilder.ApplyConfiguration(new LanguageConfiguration());
modelBuilder.ApplyConfiguration(new MaintainerConfiguration());
}
public class LanguageConfiguration : IEntityTypeConfiguration<Language>
{
public void Configure(EntityTypeBuilder<Language> entityTypeBuilder)
{
//TODO: Move this to something like BaseEntityConfiguration?
entityTypeBuilder.Property(b => b.CreatedDateUtc).HasDefaultValueSql("CURRENT_TIMESTAMP");
}
}
public class MaintainerConfiguration : IEntityTypeConfiguration<Maintainer>
{
public void Configure(EntityTypeBuilder<Maintainer> entityTypeBuilder)
{
//TODO: Move this to something like BaseEntityConfiguration?
entityTypeBuilder.Property(b => b.CreatedDateUtc).HasDefaultValueSql("CURRENT_TIMESTAMP");
}
}
ありがとう、私はそれを撃つでしょう。このソリューションで私のOnModelCreating()がどのようになるとお考えですか? –
同じである必要があります。それぞれのConfigure()オーバーライドでbase.Configureを呼び出すだけです。 – CalC
動作確認済み!ありがとう! –