首先忽略EF代码中所有继承对象中的属性

时间:2014-07-19 09:42:50

标签: c# entity-framework inheritance .net-4.0 ef-code-first

我的EF代码第一个模型中的所有实体都有以下抽象基类:

public abstract class BaseEntity
{
  public Id {get; set;}  
  public bool IsDeleted {get; set;}  
  ...
}

我在DbContext的{​​{1}}方法中编写了以下代码,以忽略OnModelCreating()

IsDeleted

但是当它导致跟随错误时:

  

您无法在属性中使用Ignore方法' IsDeleted'在类型' MyEntity'因为这种类型继承了类型' BaseEntity'此属性的映射位置。要从模型中排除此属性,请在基类型上使用NotMappedAttribute或Ignore方法。

我使用protected override void OnModelCreating(DbModelBuilder modelBuilder) { ... modelBuilder.Types().Configure(c => c.Ignore("IsDeleted")); ... } 因此我无法使用.NET 4忽略[NotMappedAttribute],因此我使用了以下代码:

IsDeleted

并将public partial class BaseEntity_Mapping : EntityTypeConfiguration<BaseEntity> { public BaseEntity_Mapping() { this.HasKey(e => e.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); this.Ignore(t => t.IsDeleted); } } 方法更新为:

OnCreatingModel()

但问题仍然存在。 有什么想法吗?

1 个答案:

答案 0 :(得分:3)

这是实体框架5中确认的错误。请参阅this link

它应该已在EF6中修复。 解决方法:只读IsDeleted并提供SetIsDeleted(bool value)功能。