如何使用DbModelBuilder与Database First Approach实现软删除

rd5*_*3hu 9 c# sql-server asp.net-mvc entity-framework

我正在尝试在我们的EF 6项目中实现软删除.我们正在使用数据库第一种方法,我注意到你无法覆盖OnModelCreating.

使用Code-First方法时,可以对特定实体应用全局过滤器,如本博文中所述.

如何使用Database First方法重新创建它?

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 0

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

您需要编写 base.OnModelCreating(modelBuilder); 构建您的查询,我还在帖子中突出显示了这一行。