두 개의 엔티티 Candidate 및 CandidateLocation을 가지며 여기서 후보는 여러 CandidateLocation 항목을 가질 수 있습니다.Linq Navigation Properties complex ID in (선택 ID from ...)
CandidateLocation에는 ISO 국가 코드 (예 : 미국, GB) 및 유형 열 (1 = 허용됨, 2 = 제한됨) 인 후보 ID가 있습니다.
규칙은 후보자가 CandidateLocation 테이블에 '허용 된'항목이없는 경우 어디에서나 작업 할 수 있다고 규정합니다. 명시된 '허용'위치가있는 경우 명시 적으로 허용 된 위치에서만 작업 할 수 있습니다. 그들은 제한된 장소에서 일할 수 없습니다. 는이 SQL에서
이가 될 것이라고 달성 한 가지 방법을 (후보자가 그림을 단순화하기 위해 하나에 내가 그것을 유지 한 여러 위치를 가질 수 있습니다) 아래의 이미지를 참조하시기 바랍니다 보여 시도
SELECT *
FROM Candidate
WHERE Candidate.IsArchived = 0
AND
-- Do not inlude restricted locations (RestrictionStatus = 2)
Candidate.CandidateId NOT IN (SELECT CandidateId FROM CandidateLocation WHERE IsArchived = 0 AND CountryISOCode = @Location AND RestrictionStatus = 2)
AND
(
-- Include Explicit Permitted Locations
Candidate.CandidateId IN (SELECT CandidateId FROM CandidateLocation WHERE IsArchived = 0 AND CountryISOCode = @Location AND RestrictionStatus = 1)
OR
-- Include Candidates with no Explicit Permitted Locations
Candidate.CandidateId NOT IN (SELECT CandidateId FROM CandidateLocation WHERE IsArchived = 0 AND RestrictionStatus = 1)
)
사람이 & 탐색 속성 내가 도움을 크게 감사하겠습니다이 사용 LINQ를 달성하는 방법을 알고있는 경우 쿼리
다음과 같습니다.많은 감사
사이의 관계를 가지고 있다고 가정하면? [무엇을 시도해 봤습니까?] (http://mattgemmell.com/2008/12/08/what-have-you-tried/) – istepaniuk