1

在 EF Core 中配置我的模型映射时,我想设置一些通用映射规则,例如。告诉每个具有Id属性的类,该属性被映射到 DB 列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+也有类似的可能吗?

4

1 回答 1

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");
        }
    }
}
于 2018-12-12T06:37:42.190 回答