我的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()
但问题仍然存在。 有什么想法吗?
答案 0 :(得分:3)
这是实体框架5中确认的错误。请参阅this link。
它应该已在EF6中修复。
解决方法:只读IsDeleted
并提供SetIsDeleted(bool value)
功能。