我有一个代码优先模型,其中所有实体都是从Entity
基类派生的。我在基类中有一个属性IsDeleted
我想在所有实体中忽略(我不能删除/注释IsDeleted属性,因为在许多项目中使用了基类)。有没有办法配置modelBuilder
从所有实体中忽略此属性(我认为是惯例),而不是为我的模型中的所有实体指定modelBuilder.Entity<...>().Ignore(l => l.IsDeleted)
?
谢谢, 离子
答案 0 :(得分:15)
您可以使用新的EF 6.1 Custom Code First Conventions:
执行此操作modelBuilder.Types().Configure(c => c.Ignore("IsDeleted"));
这将忽略任何类型中IsDeleted
名称的任何属性。
如果您只想对继承某个基类的类执行此操作,则可以执行以下操作:
modelBuilder.Types()
.Where(t => t.IsSubclassOf(typeof(MyBaseClass)))
.Configure(c => c.Ignore("IsDeleted"));
答案 1 :(得分:2)
您可以在属性上使用[NotMapped]
注释,但仍需要为每个实体添加,这与仅指定一次并具有忽略它的约定不同。