IsDeleted 열을 사용하여 응용 프로그램에서 소프트 삭제를 구현하고 ORM에 EF 6 Code First를 사용합니다. 내가 예를 .FOR (많은 관계) 지연로드 탐색 속성에 액세스하기위한 도트 연산자를 사용하여 자동으로 삭제 엔티티를 필터링 할 : 사용자가 많은 역할Entity Framework 6 느린 로딩 탐색 속성에 대한 자동 필터링
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를 사용하는 경우, 그것은 자동 필터는 엔티티를 삭제, 그래서 나는 많은 장소에서 발생하기 때문에 같이 명시 적으로 쓰지 않습니다 : 내가 EF 인터셉터에 대해 생각하고
user.Roles.where(u => u.IsDeleted == false).ToList();
하지만, 모든 쿼리에 적용됩니다 내가 여전히 원하는 비즈니스 요구 때문에 일부 장소에서 삭제 된 항목을로드하십시오. 이것을 효과적으로 수행 할 수있는 다른 방법이 있습니까?
감사합니다.
Thanks SimpleVar. 하지만 내 애플 리케이션이 이런 식으로 수천의 컬렉션을 가지고 있으므로 래퍼 속성을 추가하거나 Active() 확장 메서드를 사용하면 시간이 많이 걸릴 것이다. –