Microsoft MVP성태의 닷넷 이야기
안녕하세요! EntityFramework Linq 질문 드리겠습니다. [링크 복사], [링크+제목 복사]
조회: 2335
글쓴 사람
옥코드
홈페이지
첨부 파일
 
(연관된 글이 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분
[옥코드] 감사합니다 도움이 되었습니다^^
[손님]
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)
5629감사...3/23/20221486함수에서 예외가 발생하면 try ~ catch처리기를 찾을 때 까지 상위 함수로 계속 올라가나요? [2]
5628홍길동3/23/20221498질문드립니다. [2]파일 다운로드1
5626연준혁3/21/20221459안녕하세요. [3]
5625ja...3/18/20221697c# 8.0 도서를 구입한 사람입니다. [1]
5624초보자3/17/20221396람다 캡처 관련 문의 [2]
5623한예지3/15/20221632인터프리터 원리가 궁금합니다. [4]
5622김민아3/8/20221625const와 readonly의 명확한 차이가 이게 맞나요? [2]
5621장성욱3/8/20221476c# 로그 관련 질문 [1]
5620김민아3/7/20221440안녕하세요 비관리 객체를 반환하는 메소드 호출 시 궁금한 점이 있어서 질문드립니다 [2]
5619팡팡이3/3/20222232RSA 문의드립니다. [3]
5618김기헌3/2/20221427안녕하세요 생성자 옆에 this 키워드를 붙여 생성자를 여러 개 호출 시 질문드립니다 [2]
5617Ed...2/25/20221597ArgumentOutOrRangeException에러 발생 [2]파일 다운로드1
5616cs...2/24/20221438readonly struct로 선언된 구조체를 특정 클래스에서 멤버변수로 가지는 경우 [1]
5615장성욱2/22/20222232SetThreadAffinityMask를 이용한 쓰레드 지정하는 방법에 대해 궁금합니다. [4]
5614민우2/22/20222090SSL 통신 문의 [6]
5613김인태2/22/20221506서버와 PC 간의 어플리케이션 성능 차이 [1]
5612팬입...2/20/20221338Kastrel 서버 관련 [1]
5611차가워2/19/20221455stopWatch 늘어짐 문의 [3]
5610차가워2/18/20221399Stopwatch 늘어짐 문제 [1]
5609cs...2/15/20221582c# 함수의 호출 방식에 대해 궁금합니다! [2]
5608지호2/10/20221732시작하세요 C# 8.0 중 제네릭타입의 IEnumerable [3]파일 다운로드1
5607이로운2/10/20221470안녕하세요. 궁금한게 있어서 질문드립니다. [1]
5605강성봉2/10/20221412TCP PSH flag 패킷 수신 에러 [1]
5604LW2/9/20221516VISUAL STUDIO 2019 ==> 2020 설치시 오류가 생겨서 문의드립니다. [3]
5603김진명2/9/20222143C# 10.0 출간은 언제쯤 계획하고 계신가요? [1]
5602신갑영2/8/20221646윈폼에 대해서 질문 드립니다. [1]
1  2  3  4  5  6  7  8  9  [10]  11  12  13  14  15  ...