Mas*_*oud 5 c# inheritance entity-framework .net-4.0 ef-code-first
我的 EF 代码第一个模型中的所有实体都有以下抽象基类:
public abstract class BaseEntity
{
public Id {get; set;}
public bool IsDeleted {get; set;}
...
}
Run Code Online (Sandbox Code Playgroud)
我在我DbContext的OnModelCreating()方法中编写了以下代码来忽略IsDeleted
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
...
modelBuilder.Types().Configure(c => c.Ignore("IsDeleted"));
...
}
Run Code Online (Sandbox Code Playgroud)
但是当它导致以下错误时:
您不能在类型“MyEntity”上的属性“IsDeleted”上使用忽略方法,因为此类型继承自映射此属性的类型“BaseEntity”。要从模型中排除此属性,请在基类型上使用 NotMappedAttribute 或 Ignore 方法。
我正在使用.NET 4所以我不能[NotMappedAttribute]用来 ignore IsDeleted,所以我使用了以下代码:
public partial class BaseEntity_Mapping : EntityTypeConfiguration<BaseEntity>
{
public BaseEntity_Mapping()
{
this.HasKey(e => e.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
this.Ignore(t => t.IsDeleted);
}
}
Run Code Online (Sandbox Code Playgroud)
并将OnCreatingModel()方法更新为:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
...
modelBuilder.Configurations.Add(new BaseEntity_Mapping());
modelBuilder.Types().Configure(c => c.Ignore("IsDeleted"));
...
}
Run Code Online (Sandbox Code Playgroud)
但问题仍然存在。有什么想法吗?