2
EF Core 2.0에서 우리는 더 깨끗한 Fluent API 매핑 (source)을 위해 IEntityTypeConfiguration
에서 파생 될 수 있습니다.기본 엔티티에서 IEntityTypeConfiguration 사용
기본 엔터티를 활용하려면 어떻게 패턴을 확장 할 수 있습니까? 아래 예에서 LanguageConfiguration
과 MaintainerConfiguration
의 중복을 줄이기 위해 BaseEntityConfiguration
을 사용하고 에만있는 속성을 수정하는 방법은 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
확인 된 작업! 감사! –