模型构建器基于POCO接口参与流畅

时间:2016-08-25 17:39:53

标签: entity-framework-core

我正在尝试找出ModelBuilder / Fluent API,以便我可以更改基础CLR类型实现特定接口的实体的属性。

给出如下界面:

public interface IVersionedEntity
{
    DateTime ValidFrom { get; set; }
    DateTime ValidTo { get; set; }
}

在OnModelCreating期间,我想找到底层CLRType实现此接口的任何实体,然后将ValidFrom和ValidTo属性更改为 ValueGeneratedOnAddOrUpdate

基本上,我正在寻找在ModelBuilder中进行“IsAssignableFrom”类型测试的合适位置。

感谢。

1 个答案:

答案 0 :(得分:0)

这是起点:

var versionedEntityTypes = modelBuilder.Model.GetEntityTypes()
    .Where(type => typeof(IVersionedEntity).IsAssignableFrom(type.ClrType));

foreach (var type in versionedEntityTypes)
{
    type.FindProperty("ValidFrom").ValueGenerated = ValueGenerated.OnAddOrUpdate;
    type.FindProperty("ValidTo").ValueGenerated = ValueGenerated.OnAddOrUpdate;
}