我有一个基本模型:
public abstract class Status
{
public string updateUserName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后是扩展上面定义的基本模型的模型:
public class Item : Status
{
public int Id { get; set; }
public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我为每个定义了配置类:
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);
}
Run Code Online (Sandbox Code Playgroud)
现在,我有以下Context类:
public class TestDbContext : DbContext
{
public …Run Code Online (Sandbox Code Playgroud) sql-server ef-code-first entity-framework-core ef-fluent-api asp.net-core-2.0
想象一下,我想向所有实体添加一个IsDeleted列或一些审核列。我可以创建一个基类,所有实体都将从该基类继承,这将解决我的问题,但是我无法指定创建列的顺序,因此我将以所有审计字段结束,然后才是实体字段,我不想要。我希望他们在桌子的尽头。
在实体框架的标准版本中,我们可以通过使用指定列顺序的注释来做到这一点。但是,目前对于EF核心还不存在这种情况。
我可以使用OnModelCreating()方法上的流利api来做到这一点,问题在于我只知道如何为我的每个实体单独进行操作,这意味着我必须为我拥有的每个实体编写相同的代码。
有什么办法可以为我所有的实体通用吗?某种for循环遍历我在dbcontext的DbSet中注册的所有实体?