Entity Framework 핵심과 외부 외부 조인

c# entity-framework-core

문제

EF7 (7.0.0-rc1-final), vNext RC1 (rc1-final) 및 SQL Server 2014를 사용하여 왼쪽 외부 조인 요청을 수행하려고합니다.

데이터베이스 :

애완 동물 : 이드, 이름

사용자 : ID, 이름, #PetId

이 하나의 작품 :

var queryWorks = from u in _context.Users
                 join p in _context.Pets on u.PetId equals p.Id into pp
                 from p in pp.DefaultIfEmpty()
                 select new {
                     UserName = u.Name,
                     Pet = p
                 };

그러나 이것은 작동하지 않습니다 (Message = "Sequence는 요소가 없습니다") :

var queryWorks = from u in _context.Users
                 join p in _context.Pets on u.PetId equals p.Id into pp
                 from p in pp.DefaultIfEmpty()
                 select new {
                     UserName = u.Name,
                     Pet = p
                 };

SQL Server 프로필 2014는 두 번째 요청이 SQL Server로 보내지지 않았다는 것을 나타냅니다. 왜 ?

수락 된 답변

제 생각에는 당신의 두 번째 질의의 투영 안의 p.Name 이 처리되지 않는 것 같습니다.

RC1에서 EF7은 왼쪽 외부 조인을 수행하는 방법을 아직 모릅니다. 요컨대, 그들은 옳은 것을 얻는 것이 정말로 중요한 것임을 알고 있으며, 그들은 그것에 대해 연구하고 있습니다.

github에서 3186 호 에보고되었으며 일부 개발자는 이에 대해 논평했습니다.

나는 너의 것과 조금 다른 repro와 함께 나 자신을 언급했다.

공동 작업자 "maumar"발언 :

문제는 Linq에서 (객체에) LOJ의 개념 자체가 존재하지 않는다는 것입니다.

제안 된 해결 방법은 SelectMany-GroupJoin-DefaultIfEmpty 조합을 사용하여 선택적 탐색을 표현한 다음이 패턴을 관계형 파이프 라인에서 LOJ로 축소하는 것입니다. 문제는 (주로 서브 쿼리의 도입으로 인해) 훨씬 더 복잡한 쿼리를 생성하고 현재 대부분의 중요하지 않은 경우에 문제가 발생한다는 것입니다. 이러한 버그는 탐색 속성 확장으로 문제를 해결하기 전에 해결해야합니다.

잠재적으로 잘못된 결과를 반환하므로 우선 순위가 높은 버그로 인식합니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.