【发布时间】:2016-03-20 06:48:03
【问题描述】:
在我的域模型中,我尝试仅为 EntityBase 子类的实体设置公共属性的映射。为此,我尝试使用 IsAssignableFrom 进行过滤,但它没有给出任何结果,并且这些属性不会发生映射。
任何关于如何解决 IsAssignableFrom 问题的建议,或任何其他验证实体层次结构的方法都将不胜感激。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
var types = modelBuilder.Model.GetEntityTypes().Where( entity =>
typeof(Domain.Core.Entity).IsAssignableFrom(entity.GetType()));
foreach (var entType in types)
{
entType.AddProperty("CreatedBy", typeof (string));
entType.AddProperty("ModifiedBy", typeof(string));
entType.AddProperty("CreatedOn", typeof(DateTime));
entType.AddProperty("LastModifiedOn", typeof(DateTime));
entType.AddProperty("RowVersion", typeof(byte[]));
}
}
【问题讨论】:
-
您是否考虑过添加这些属性的接口?
-
@Eris 同样的方式是没有解析接口。这也是阴影属性,所以它们实际上根本不存在于我的模型中。
-
使用
entity.ClrType。 -
@GertArnold,简洁有效的评论。 GetEntityTypes 返回 IMutableEntityType 对象,它是 EF 元数据,而 ClrType 属性为我提供了我的真实对象类型。如果您作为答案发布,我会将其标记为已接受。谢谢。
标签: c# .net entity-framework entity-framework-core