Я реализую мягкое удаление в своем приложении со столбцом 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 Interceptor, но он будет применяться для всех запросов, и я все еще хочу загружать удаленные объекты в некоторых местах из-за бизнес-требований. Есть ли другой способ добиться этого эффективно?
Спасибо.