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

时间:2015-11-18 22:52:31

标签: c# sql-server asp.net-mvc entity-framework

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

使用Code-First方法时,可以按照此blog post中的描述为特定实体应用全局过滤器。

如何使用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);
    }
}

1 个答案:

答案 0 :(得分: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);
    }
}

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