/VS 2008는
구조를 조인 AddressChangeRequest
표 3 : CallNotes
단일 통화가 많은 AddressChangeRequests 많은 CallNotes을 가질 수
표 2 호출합니다. 고객 (customerKey)은 많은 통화를 가질 수 있습니다.
LINQ 코드 :.
반환 db.Calls.Where (C => c.CustomerKey == '...')를 선택 ( C => 새로운 호출 (c.CustomerKey, c.StartTime, C .AddressChangeRequests, c.CallNotes));
호출은 AddressChangeRequests 및 CallNotes 목록을 필요로하는 도메인 개체입니다. 코드는 예상대로 호출 목록을 반환하지만 SQL은 최적이 아닙니다.
위의 코드는 1로 SQL은 (각각 관련된 호출에 대해 하나)을 CallNote 테이블로부터 분리 SELECT 쿼리 뒤에 AddressChangeRequest 테이블
Select ... from Call as c
LEFT OUTER JOIN AddressChangeRequest as acr ON c.id = acr.callId
Select ... from CallNote Where callId = 123
Select ... from CallNote Where callId = 456
Select ... from CallNote Where callId = 789
경우 조인 왼쪽 외부로 호출 테이블에서 선택 생성 코드에서 AddressChangeRequests를 제거하면 CallNote 테이블에 대해 왼쪽 외부 조인이 생성되고 개별 Select 문은 더 이상 생성되지 않습니다.
Select ... from Call as c
LEFT OUTER JOIN AddressChangeRequest as acr ON c.id = acr.callId
LEFT OUTER JOIN CallNote as cn ON c.id = cn.callId
LINQtoSQL을 가정하고 DataLoadOptions.LoadWith를 사용하고 있습니까? – Marc
네, LINQtoSQL에 맞습니다. 예, CallNote 및 AddressChangeRequest에서 DataLoadOptions.LoadWith를 시도했으나, 활성화 또는 비활성화가 차이를 만들지 않습니다. 의견을 보내 주셔서 감사합니다. 다른 아이디어는 있습니까? – kforbesie