SQL 쿼리를 LINQ 엔터티 쿼리로 변환하려고 시도했지만 LINQ 블록에 몇 가지 문제가 있습니다.다중 조인 - 다중 조인 - '선택'의 널 참조 예외
var pList = (from pending in pendingItems
// JOIN
from user in userList.Where(u => pending.UserID == u.UserID)
// LEFT OUTER JOIN
from fork in forkList.Where(f => pending.ID == f.PendingID)
.DefaultIfEmpty()
// LEFT OUTER JOIN
from map in mapList.Where(m => fork.ID == m.ForkID)
.DefaultIfEmpty()
orderby pending.Date descending
select new
{
ItemID = pending.ID, // Guid
Description = pending.Description, // String
Date = pending.Date, // DateTime
Status = fork.Status, // Int32 (*ERROR HERE*)
UserName = user.UserName, // String
MapID = map.ID // Guid (*ERROR HERE*)
})
.Distinct()
.ToList();
LINQ 쿼리이 중 하나에 실패 : 나는 지금까지 그것을 가지고
다음SELECT distinct(p.PendingID,
p.Description,
p.Date,
f.Status,
u.UserName,
m.MapID
FROM Pending p
JOIN Users u
ON p.UserID = u.UserID
LEFT JOIN Forks f
ON p.PendingID = f.PendingID
LEFT JOIN Maps m
ON f.ForkID = m.ForkID
ORDER BY p.Date DESC
엔티티 쿼리에 LINQ입니다 : 여기
예상대로 수행하는 SQL 쿼리입니다 다음 두 줄은 왼쪽에서 검색된 값을 할당하려고 시도합니다. 외부 조인은입니다. 다음 줄을 생략하는 경우, LINQ 쿼리는 오류없이 완료 :Status = fork.Status,
MapID = map.ID
가 왜 LINQ 쿼리의 선택 블록 내에서 실패하는 2 속성 할당입니까?
데이터베이스의 EF 또는 메모리 내 팩시밀리에 대해 실제로이 작업을 수행하고 있습니까? 둘째,이 코드는 LINQPad에 있으며 생성 된 SQL을 확인할 수 있습니까? –
저는 이것이 컴파일러 오류라고 생각합니다. 그래서 두 줄 모두에서 오류를 볼 수 있습니다. – tster
tster : 게시물 제목에 "Null Reference Exception"이라고 표시되어 컴파일러 오류가 의심 스럽습니다. – Gabe