在EF Core中配置模型映射时,我想设置一些常规映射规则,例如。告诉每个具有Id
属性的类,该属性已映射到数据库列ID
。
使用实体框架,我可以使用以下代码实现此目标:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Types<IEntity<long>>().Configure(c =>
{
c.Property(x => x.Id).HasColumnName("ID");
});
}
({IEntity<long>
是一个只有单个属性long Id { get; set; }
的简单接口。我模型中的每个实体类都简单地实现了此接口。)
使用Entity Framework Core 2.2+是否也可以进行类似的操作?
答案 0 :(得分:0)
最后,我得到了以下解决方案:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
foreach (IMutableEntityType mutableEntityType in modelBuilder.Model.GetEntityTypes())
{
bool isEntity = mutableEntityType.ClrType.GetInterface($"{nameof(IEntity<int>)}`1") != null;
if (isEntity)
{
modelBuilder.Entity(mutableEntityType.ClrType).Property(nameof(IEntity<int>.Id)).HasColumnName("ID");
}
}
}