我正在尝试找出ModelBuilder / Fluent API,以便我可以更改基础CLR类型实现特定接口的实体的属性。
给出如下界面:
public interface IVersionedEntity
{
DateTime ValidFrom { get; set; }
DateTime ValidTo { get; set; }
}
在OnModelCreating期间,我想找到底层CLRType实现此接口的任何实体,然后将ValidFrom和ValidTo属性更改为 ValueGeneratedOnAddOrUpdate 。
基本上,我正在寻找在ModelBuilder中进行“IsAssignableFrom”类型测试的合适位置。
感谢。
答案 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;
}