Microsoft MVP성태의 닷넷 이야기
안녕하세요! EntityFramework Linq 질문 드리겠습니다. [링크 복사], [링크+제목 복사]
조회: 1800
글쓴 사람
옥코드
홈페이지
첨부 파일
 
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분
[옥코드] 감사합니다 도움이 되었습니다^^
[손님]
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
정성태

1  2  3  4  5  6  [7]  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5605강성봉2/10/20221115TCP PSH flag 패킷 수신 에러 [1]
5604LW2/9/20221233VISUAL STUDIO 2019 ==> 2020 설치시 오류가 생겨서 문의드립니다. [3]
5603김진명2/9/20221775C# 10.0 출간은 언제쯤 계획하고 계신가요? [1]
5602신갑영2/8/20221317윈폼에 대해서 질문 드립니다. [1]
5601김인태2/4/20221392setup project 관련 [7]
5600it...2/3/20221362윈도우 서버 계정 패스워드 인증 문의 [5]
5599레드...2/3/20221828c#으로 ms word 제어 가능할까요? [6]
5598ja...2/2/20221409Dictionary는 참조형식인가요?? [1]
5597재원2/2/20221257c# 9.0에 대한 내용을 받을 수 있나요? [1]
5596kss1/26/20221425듀얼 모니터 환경에서 wpf 프로그램 크기 변경 [2]
5594mi...1/25/20221265안녕하세요 try~catch 와 SuspendLayout~ResumeLayout 간 호출 문의드립니다! [2]
5593C#...1/12/20221624TaskAwaiter 구현 질문 입니다. [1]
5591유지킴12/24/20211409outofmemory in 32bit [2]파일 다운로드1
5590kss12/23/20211386포인터 메모리 에러 [1]
5589초급12/22/20211498c# -> 라즈베리파이(db 접속)시 에러 발생 [7]
5588김지신12/21/20211364안녕하세요 String 변수 참조 주소 질문입니다. [2]
5587이완호12/17/20211645C# SharpDX 화면 캡쳐 관련해서 질문 드립니다. [1]
5586조미김12/16/20211523윈폼에서 메인 스레드와 UI 스레드의 차이점 질문드립니다 [4]
5585김준희12/16/20211841C# 윈폼 TCP/IP 데이터 연속으로 보낼때 [1]
5583난인...12/10/20211377.net 6 dynamic pgo 활성화 및 예상되는 문제 [1]
5582김준희12/9/20214054C# TCP/IP 통신시 연결 끊김 에러 [1]
5581김시준12/9/20211674닷넷에서 파일 delete 함수는 왜 비동기가 없는 것인가요? [2]
5580카짜...12/7/20212160패턴매칭 -튜퓰비교에 관한 오류사항과 궁금증 [1]파일 다운로드1
5579카짜...12/6/2021194211.12 메서드 중복정의에 대한 질문 [1]
5577감사...11/30/20211583visual studio 2015 update 3를 다운받을려고 하는데 x64/x86 차이점이 뭘까요? [2]
5576노홍구11/29/20211437C# 으로 USB 스캐너 프린터 리셋하기 입니다. [1]
1  2  3  4  5  6  [7]  8  9  10  11  12  13  14  15  ...