相关疑难解决方法(0)

如何使用Entity Framework自动过滤掉软删除的实体?

我正在使用Entity Framework Code First.我重写SaveChangesDbContext,让我做一个"软删除":

if (item.State == EntityState.Deleted && typeof(ISoftDelete).IsAssignableFrom(type))
{
    item.State = EntityState.Modified;
    item.Entity.GetType().GetMethod("Delete")
        .Invoke(item.Entity, null);

    continue;
}
Run Code Online (Sandbox Code Playgroud)

这很好,所以对象知道如何将自己标记为软删除(在这种情况下它只是设置IsDeletedtrue).

我的问题是我怎样才能使它在检索对象时忽略任何对象IsDeleted?所以,如果我说_db.Users.FirstOrDefault(UserId == id)如果该用户拥有IsDeleted == true它将忽略它.基本上我想过滤?

注意:我不想只是把&& IsDeleted == true 那就是为什么我用界面标记类,所以删除知道如何"正常工作",我想以某种方式修改检索,知道如何"正常工作"也基于那个界面存在.

.net c# entity-framework ef-code-first

34
推荐指数
4
解决办法
2万
查看次数

标签 统计

.net ×1

c# ×1

ef-code-first ×1

entity-framework ×1