【发布时间】:2016-08-09 01:18:00
【问题描述】:
我正在使用 IsDeleted 列在我的应用程序中实现软删除,并将 EF 6 Code First 用于 ORM。我想在使用点运算符访问延迟加载导航属性(具有许多关系)时自动过滤已删除的实体。例如:一个用户有很多角色
public class User
{
private ICollection<Role> _roles;
public virtual ICollection<Role> Roles
{
get { return _roles?? (_roles= new List<Role>()); }
protected set { _roles= value; }
}
}
而且我需要在我使用 user.Roles 时,它会自动过滤已删除的实体,所以我不会像这样明确地写它,因为它会在很多地方发生:
user.Roles.where(u => u.IsDeleted == false).ToList();
我正在考虑 EF 拦截器,但它适用于所有查询,并且由于业务需求,我仍然想在某些地方加载已删除的实体。
有没有其他方法可以有效地实现这一目标?
谢谢。
【问题讨论】:
标签: c# entity-framework soft-delete