Microsoft MVP성태의 닷넷 이야기
안녕하세요! EntityFramework Linq 질문 드리겠습니다. [링크 복사], [링크+제목 복사],
조회: 15289
글쓴 사람
옥코드
홈페이지
첨부 파일
 
(연관된 글이 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]


비밀번호

댓글 작성자
 



2021-09-30 09시55분
정성태
2021-09-30 01시53분
[옥코드] 감사합니다 도움이 되었습니다^^
[guest]
2021-09-30 02시26분
그런데, 가만 보니까 INNER JOIN에 OR 조건을 한 것이 사실 CROSS JOIN과 다를 바가 없습니다. 따라서, 다음과 같은 식으로 Linq 쿼리를 작성해도 결과는 동일하게 나올 것입니다.

var q = from a in t_BlockCahinInfo
        from b in t_Member
        where a.FromId == b.Id || a.ToID = b.ID
        ...[생략]...
정성태
2021-09-30 11시55분
다음의 글에 정리했으니 참고하세요.

Entity Framework의 Join 사용 시 다중 칼럼에 대한 OR 조건 쿼리
; https://www.sysnet.pe.kr/2/0/12840
정성태

... 91  92  93  94  95  [96]  97 
NoWriterDateCnt.TitleFile(s)
46정성태5/31/200413310    답변글 [답변]: 웹페이지 자동로그인..
44반데라이차5/26/200412456안녕하세요~저 오크에요~~^^* [1]
43이윤복4/22/200411316윤보기 입니다.
48정성태5/31/200412625    답변글 [답변]: 윤보기 입니다.
40김대웅2/26/200413711메일 드렸는데.. 읽어보셨는지 모르겠네요.. 많이 바쁘신것 같아요..
41정성태2/29/200412584    답변글 [답변]: 메일 드렸는데.. 읽어보셨는지 모르겠네요.. 많이 바쁘신것 같아요..
42정성태3/6/200413840    답변글 [답변]: 메일로 답변을 드렸는데. 메일이 자꾸 반송되네요. 여기서 답변드립니다.
38문우영1/19/200412150ㅋㅋ 한글 아이디도 되는군요.!!
39정성태1/26/200412746    답변글 [답변]: 다행이네요. ^^;
33신종화1/9/200413637성태님 오랬만이군요 ^^ 새해복 많이 받으세요
35정성태1/17/200411713    답변글 [답변]: 성태님 오랬만이군요 ^^ 새해복 많이 받으세요
32김기영1/5/200412479질문인데요... 웹브라우저로 text를 전송할 수 있을까요??
34정성태1/17/200412011    답변글 [답변]: 질문인데요... 웹브라우저로 text를 전송할 수 있을까요??
28박소연10/30/200315957c언어를 이용한 가계부 프로그램
31정성태12/17/200317392    답변글 [답변]: c언어를 이용한 가계부 프로그램
27임영택9/17/200312583atl com에서 Window Handle 구하고 싶은데(바쁘시더라도 꼭 답변 해주세요!!)
30정성태12/17/200313007    답변글 [답변]: atl com에서 Window Handle 구하고 싶은데(바쁘시더라도 꼭 답변 해주세요!!)
26임영택9/15/200312011IE에서 submit 버튼을 누를때 발생하는 이벤트를 받을수 있나요?
29정성태12/17/200312100    답변글 [답변]: IE에서 submit 버튼을 누를때 발생하는 이벤트를 받을수 있나요?
24임영택9/14/200312144실행중인 DLL과 통신하는 방법?
25임영택9/15/200312266    답변글 [답변]: 자답(해결했습니다)
21박용운7/29/200311821잠긴파일에서...
22박용운7/30/200313289    답변글 왜 MoveFileEx가 먹히지를 않을까요?
23박용운7/30/200313174        답변글 [자답]
19김진호7/28/200312273atl 디버깅
20정성태7/29/200312268    답변글 [답변]: atl 디버깅
... 91  92  93  94  95  [96]  97