c# - 如何使用具有数据库优先方法的 DbModelBuilder 来实现软删除

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

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

关于c# - 如何使用具有数据库优先方法的 DbModelBuilder 来实现软删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33792020/

相关文章:

javascript - Ajax发送数据到 Controller 时为空

asp.net-mvc - 在 ASP.NET MVC 中将引用数据加载到 View 模型中的可靠方法

c# - 发生错误时从Entity Framework中删除一批记录

sql-server - 可重复读取 - 我理解对吗?

sql-server - 在 SQL Azure 数据库上运行每小时备份的最佳实践?

mysql - 如何选择临时表并立即更新

c# - 覆盖 ASP.NET 缓存策略并将 Cache-Control 设置为 public

c# - 如何使用openxml添加链接到word中标题的超链接

c# - 将 HTTP GET 方法添加到 C# Web 服务

c# - 文件流写入文件并读取 bfile