(연관된 글이 1개 있습니다.)
EntityFramework를 사용하면서, 기존에 선임이 작업했던 스트링형태의 쿼리문을 전부 EF Linq로 바꾸고 있는데요, 몇가지 복잡한 쿼리문에 대한 문제점이 발생했습니다.
sb.Append("SELECT a.*, c.Flag, c.RelatedTxID ");
sb.Append(" FROM t_BlockChainInfo a ");
sb.Append(" INNER JOIN t_Member b ");
sb.Append(" ON(a.FromID = b.ID ");
sb.Append(" OR a.ToID = b.ID) ");
sb.Append(" LEFT OUTER JOIN t_Transaction c ");
sb.Append(" ON a.TransactionHash = c.txID ");
sb.Append("WHERE b.ProcessID = @ProcessID ");
sb.Append(" AND b.HardDriveID = @HardDriveID ");
sb.Append(" AND b.ID = @ID ");
sb.Append(" AND a.FromID <> a.ToID ");
sb.Append(" AND (a.RegDate BETWEEN @StartDate AND @EndDate) ");
위와 같이 3개의 테이블이 존재하며, Inner Join과 Left Outer join을 통해 해당 data를 얻어오는 작업입니다.
제가 시도했던 방식은 일반 Linq는
var q = from a in t_BlockChainInfo
join b in t_Member s on a.FromId equals b.Id
EF linq 는 ,
var q = _context.t_BlockChainInfo
.Join(_context.t_Mebers, a=>a.FromId, b=>b.Id)
와 같은 형태로, 위 스트링 형태의 쿼리문처럼 _
ON a.FromID = b.ID OR a.ToID = b.ID <==== OR 부분을 구현하기가 난해하네요;
어떤식으로 EF Linq를 짜야할까요.,.
[연관 글]
[최초 등록일: ]
[최종 수정일: 9/29/2021]