왼쪽 테이블에 2 개의 테이블에 대한 Linq 외부 조인 쿼리를 작성하려고하지만 런타임에 NULL 테이블에 null 값이있는 경우 NULL 참조 예외가 발생합니다.왼쪽 외부 조인 런타임 오류가
tbl_Match 테이블의 모든 MatchID 값에 대해 tbl_UserBets 테이블에는 all 값이 없습니다. tbl_UserBets 테이블
Create Table tbl_Match(
MatchID int primary key Identity,
TournamentID int Foreign key references tbl_Tournament(TournamentID),
Team1 int Foreign key references tbl_TournamentTeams(TeamID),
Team2 int Foreign key references tbl_TournamentTeams(TeamID),
StartTime DateTime not null,
MatchBetAmount int not null
);
SQL 테이블 디자인 : NULL 값이 나오면 따라서, 나는 tbl_Match 테이블에 대한
string userID = "dfa3c0e7-2aa3-42ee-a7d3-803db902dc56";
var res2 = dbEntity.tbl_Match.Select(m => new
{
MatchID = m.MatchID,
Team1 = m.Team1,
Team2 = m.Team2,
UserForTeam1 = dbEntity.tbl_UserBets.Where(b => b.UserForTeam1 == userID).FirstOrDefault(b => b.MatchID == m.MatchID),
UserForTeam2 = dbEntity.tbl_UserBets.Where(b => b.UserForTeam2 == userID).FirstOrDefault(b => b.MatchID == m.MatchID)
});
foreach (var item in res2)
{
Console.WriteLine(item.MatchID + " " + item.Team1 + " vs " + item.Team2 + " " + item.UserForTeam1 == null ? " NA " : item.UserForTeam1.UserForTeam1);
}
SQL 테이블 디자인, 시간 예외
PFB 내 LINQ 쿼리를 실행는군요 :
Create Table tbl_UserBets(
UserBetSlNo int primary key identity,
TournamentID int Foreign key references tbl_Tournament(TournamentID),
MatchID int Foreign key references tbl_Match(MatchID),
UserForTeam1 nvarchar(128) Foreign key references AspNetUsers(Id),
UserForTeam2 nvarchar(128) Foreign key references AspNetUsers(Id),
UserForNoBets nvarchar(128) Foreign key references AspNetUsers(Id)
);
아래의 SQL 쿼리를 사용하면 결과를 올바르게 얻을 수 있습니다. o LINQ와 동일하게 수행하십시오.
select DISTINCT(tbl_Match.MatchID),tbl_Match.Team1,tbl_Match.Team2,tbl_Match.StartTime,tbl_Match.MatchBetAmount,tbl_UserBets.UserForTeam1,tbl_UserBets.UserForTeam2,tbl_UserBets.UserForNoBets from tbl_Match left outer join tbl_UserBets on tbl_Match.MatchID = tbl_UserBets.MatchID and (tbl_UserBets.UserForTeam1 = 'dfa3c0e7-2aa3-42ee-a7d3-803db902dc56' or tbl_UserBets.UserForTeam2 = 'dfa3c0e7-2aa3-42ee-a7d3-803db902dc56')
알려 주시면 문제를 해결하기 위해 어떤 조치를 취해야합니까? 감사.
참조 MSDN으로 예외가 발생할 때이 문제를 추측하고있어
가 첫 번째 또는 기본으로 WHERE 조건을 병합하려고 : HTTPS : //code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b – jdweng