我正在尝试在我们的EF 6项目中实现软删除。我们正在使用数据库优先方法,我注意到您不能覆盖OnModelCreating
。
使用“代码优先”方法时,可以像此blog post中所述为特定实体应用全局过滤器。
如何使用“数据库优先”方法重新创建它?
public class MyContext : DbContext
{
public virtual IDbSet<Company> Companies { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Company>()
.Map(m => m.Requires("IsDeleted").HasValue(false))
.Ignore(m => m.IsDeleted);
}
}
最佳答案
public class MyContext : DbContext
{
public virtual IDbSet<Company> Companies { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Company>()
.Map(m => m.Requires("IsDeleted").HasValue(false))
.Ignore(m => m.IsDeleted);
base.OnModelCreating(modelBuilder);
}
}
您需要编写base.OnModelCreating(modelBuilder);建立您的查询,我也已在帖子中突出显示了一行。