我正在尝试在我们的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);建立您的查询,我也已在帖子中突出显示了一行。

10-06 07:49