实体框架5软删除

阿里菲·克莱顿

我试图防止对我的数据库表进行任何删除。当前使用的是Entity Framework5。首先是我的代码,

public override int SaveChanges()
    {
        var Changed = ChangeTracker.Entries();
        if (Changed != null)
        {
            foreach (var entry in Changed.Where(e => e.State == EntityState.Deleted))
            {
                entry.State = EntityState.Unchanged;
            }
        }

        return base.SaveChanges();
    }

我设法用这种方法防止了它。当我使用EF的Remove方法时,它不再起作用了。但是,我试图实现的是,当我使用给定ID的remove方法时,我想设置isDeleted(这是我所有数据库中的(位)列表)的值设置为false。目前,我迷失在互联网上的文档和共享代码中。

谢谢

本杰明·保罗

我可能会通过使可软删除的实体实现一个接口来处理此问题,例如ISoftDeletable。

public interface ISoftDeletable
{
    bool IsDeleted { get; set; }
}

然后,将上面的代码扩展为检查实体类型是否实现了ISoftDeletable接口,如果它只是将IsDeleted设置为true。

public override int SaveChanges()
    {
        var Changed = ChangeTracker.Entries();
        if (Changed != null)
        {
            foreach (var entry in Changed.Where(e => e.State == EntityState.Deleted))
            {
                entry.State = EntityState.Unchanged;
                if (entry.Entity is ISoftDeletable)
                {
                    // Set IsDeleted....
                }
            }
        }

        return base.SaveChanges();
    }

然后,您需要确保对实现ISoftDeletable的实体的查询会过滤掉那些被软删除的实体。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

实体框架6.1-如何查询软删除的记录?

来自分类Dev

实体框架:软删除和每种类型的表

来自分类Dev

使用数据库拦截器的实体框架软删除实现不起作用

来自分类Dev

EF Core>删除实体(软删除)>实体状态保持不变

来自分类Dev

实体框架级联删除

来自分类Dev

实体框架分离与删除

来自分类Dev

实体框架删除问题

来自分类Dev

实体框架5,删除一对多关系?

来自分类Dev

删除多对多实体框架

来自分类Dev

实体框架多个级联删除

来自分类Dev

实体框架6防止删除

来自分类Dev

实体框架核心级联删除

来自分类Dev

实体框架(核心)-级联删除

来自分类Dev

使用实体框架删除记录

来自分类Dev

使用实体框架删除行

来自分类Dev

实体框架无法完成删除

来自分类Dev

实体框架添加和删除实体?

来自分类Dev

删除­ (软连字符)来自元素的实体

来自分类Dev

软删除EF Core中的嵌套实体

来自分类Dev

实体框架删除与状态。已删除

来自分类Dev

实体框架删除与状态。已删除

来自分类Dev

实体框架5 Codefirst与mysql

来自分类Dev

使用实体框架或实体框架核心删除父子关系

来自分类Dev

MVC 5实体框架6-删除嵌套/分层数据

来自分类Dev

实体框架5问题删除-对象状态管理器问题

来自分类Dev

实体框架5代码优先。如何指定我要删除的表?

来自分类Dev

物理删除在laravel5中启用软删除的模型?

来自分类Dev

Laravel 5模型删除事件在软删除时会忽略属性

来自分类Dev

实体框架多对多关系删除