我们的产品有一个IsDeleted标志,因此产品在删除时会留在数据库中。 (它们只是标记为已删除)
在查询服务器时总是检查已删除的标志很烦人(其中c.IsDeleted == False&& ...)。有没有办法集中这个?在DbContainer / Context或其他地方?
答案 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();