【发布时间】:2018-10-04 01:07:49
【问题描述】:
我有一个基础模型:
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 类中定义的 Status 模型配置应用到所有扩展到它的模型(本示例中只有一个:Item)。我想避免每次使用时都定义相同的状态模型配置。 Status 模型本质上是与每个 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 类,但在网上找不到该方法的示例。我希望有更多经验的人能给我指出正确的方向吗?
如果其他信息有帮助,请告诉我。
【问题讨论】:
标签: sql-server ef-code-first entity-framework-core asp.net-core-2.0 ef-fluent-api