我有一个基础模型:
public abstract class Status
{
public string updateUserName { get; set; }
}
然后是一个扩展了上述基本模型的模型:
public class Item : Status
{
public int Id { get; set; }
public string Description { get; set; }
}
然后我为每个定义了配置类:
public class ItemConfiguration : IEntityTypeConfiguration<Item>
{
public void Configure(EntityTypeBuilder<Item> builder)
{
builder.ToTable("Item", "dbo").HasKey(c => c.Id);
builder.Property(c => c.Description).IsRequired().HasMaxLength(100);
}
}
public class StatusConfiguration : IEntityTypeConfiguration<Status>
{
public void Configure(EntityTypeBuilder<Status> builder)
{
builder.Property(c => c.updateUserName).IsRequired().HasMaxLength(50);
}
现在,我有以下的Context类:
public class TestDbContext : DbContext
{
public TestDbContext(DbContextOptions<TestDbContext> options) : base(options)
{
}
public DbSet<Item> Item { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfiguration(new ItemConfiguration());
}
}
我正在尝试弄清如何将在StatusConfiguration类中定义的状态模型配置应用于所有扩展它的模型(在本例中仅有一个:Item)。我希望避免每次使用时都重新定义相同的状态模型配置。该状态模型实质上是与每个Item记录相关联的元数据(即数据库中的一个Item表,包含两个模型中定义的所有属性;没有更多,也没有更少)。
例如,我的当前实现是以下ItemConfiguration类,而不使用StatusConfiguration类:
public class ItemConfiguration : IEntityTypeConfiguration<Item>
{
public void Configure(EntityTypeBuilder<Item> builder)
{
builder.ToTable("Item", "dbo").HasKey(c => c.Id);
builder.Property(c => c.Description).IsRequired().HasMaxLength(100);
builder.Property(c => c.updateUserName).IsRequired().HasMaxLength(50);
}
}
当前的实现方式可以正常工作并按预期迁移到数据库中,但我希望今后能够找到一种更易于管理的方式。
我假设我可以扩展ItemConfiguration类以包括StatusConfiguration类,但是在网上找不到该方法的示例。我希望有更多经验的人能够指点一下?
如果需要额外的信息,请告诉我。
IEntityTypeConfiguration<TEntity>
,我该如何实现这个功能?https://dev59.com/oVQJ5IYBdhLWcg3wtYLq - ibubi