忽略具有IsDeleted标志列集的所有实体

时间:2014-11-14 07:24:23

标签: c# entity-framework devforce

我们的产品有一个IsDeleted标志,因此产品在删除时会留在数据库中。 (它们只是标记为已删除)

在查询服务器时总是检查已删除的标志很烦人(其中c.IsDeleted == False&& ...)。有没有办法集中这个?在DbContainer / Context或其他地方?

1 个答案:

答案 0 :(得分:1)

另一种解决方案是使用扩展方法。这不会完全集中,但会封装。

public static IQueryable<T> Undeleted(this IQueryable<T> queryable)
    where T : ISoftDeletable
{
    return queryable.Where(x => !x.IsDeleted);
}

接口:

public interface ISoftDeletable
{
    bool IsDeleted { get; }
}

用法:

var undeleteds = myEntitySet.Undeleted().ToArray();