实体框架核心:常规模型配置

时间:2018-12-11 10:10:00

标签: c# .net entity-framework-core ef-core-2.2

在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+是否也可以进行类似的操作?

1 个答案:

答案 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");
        }
    }
}