实体框架按约定忽略属性

时间:2014-02-26 10:34:31

标签: entity-framework properties conventions ignore

我有一个代码优先模型,其中所有实体都是从Entity基类派生的。我在基类中有一个属性IsDeleted我想在所有实体中忽略(我不能删除/注释IsDeleted属性,因为在许多项目中使用了基类)。有没有办法配置modelBuilder从所有实体中忽略此属性(我认为是惯例),而不是为我的模型中的所有实体指定modelBuilder.Entity<...>().Ignore(l => l.IsDeleted)

谢谢, 离子

2 个答案:

答案 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]注释,但仍需要为每个实体添加,这与仅指定一次并具有忽略它的约定不同。