2012-10-21 2 views
3

소프트 삭제로 작업하고 있으며 "삭제되지 않은"엔티티의 탐색 속성을로드하려고합니다. 나는 방법을 발견했다, 나의 문제는이 방법은 나를 위해 명확하지 않다, 이것을하는 또 다른 방법이있다.열의로드 내비게이션 속성 필터링

Context.CreateSet().Include("Salary").Select(u => new {User= u, Salary = u.Salarys.Where(s => !s.Deleted)}).AsQueryable().Select(a => a.User).AsQueryable();

+0

작동중인 소프트 삭제 솔루션이 있습니다. http://stackoverflow.com/questions/12698793/soft-delete-entity-framework-code-first/18985828#18985828 – Colin

답변

4

열망로드는 필터링을 지원하지 않습니다. 귀하의 코드를 단순화 할 수 있습니다

var users = Context.CreateSet<User>() 
        .Select(u => new { 
         User = u, 
         Salary = u.Salaries.Where(s => !s.Deleted) 
        }) 
        .AsEnumerable() 
        .Select(a => a.User); 
쿼리 LINQ에 - 투에 sqitch 것이다라고 AsEnumerable까지의 모든 시간이 IQueryable 때문에 필요하지 않습니다 자신의 쿼리 및 AsQueryable로 대체되기 때문에

Include가 필요하지 않은 - 사용자 및 선택한 급여를 선택할 때의 목표. EF는 네비게이션 속성을 올바르게 수정합니다.

+0

이것은 현재 해결책이지만 감사합니다. EF 더 명확한 것을 지원하지 않습니다.이 트릭과 같습니다. – Deumber

+0

예 탐색 속성 필터링 [지원되지 않습니다] 때문에 트릭입니다 (http://data.uservoice.com/forums/72025-entity-framework-feature-suggestions/suggestions/1015345-allow-filtering-for-include- 확장 방법). –

+0

급여가 다 대다 관계이면이 솔루션을 수정해야합니까? 나는 많은 관계를 갖는 네비게이션 속성을 필터링하려고 시도한 새로운 유스 케이스에서이를 테스트하고 작동하지 않습니다. – Deumber