2009-09-21 2 views
8

에 가입 I이 ... TableA의, TableB의와 TableC가LINQ 테이블 내 데이터베이스에서 엔티티 프레임 워크

TableB의 그것이 정말 사이의 많은 관계로 하나를 정의하므로 단 2 열, TableA의와 TableC의 기본 키를 가지고 두 테이블

내가 SQL을 사용하고 싶은 것은 : 엔티티 프레임 워크에서

SELECT * 
FROM TablesA a 
JOIN TablesB b ON a.AID = b.AID 
WHERE b.BID = 1 

그것은 TableB의는 외래 키를 가지고 있기 때문에 나는 생각한다, 조인 할 나를 위해 TablesB을 만들지 않습니다!

어떻게하면됩니까? 당신이 TablesB에 대한 엔티티 클래스가없는 이유 - A는 LINQ와 결합 수행

+0

http://stackoverflow.com/questions/21051612/entity-framework-join-3-tables –

답변

7

from a in TablesA 
join b in TablesB 
on a.AID equals b.AID 
into joined 
where b.BID == 1 
select joined 

내가 진짜 문제가 될 수있다 생각 매우 간단합니다? 이에 대한 더 많은 정보가 필요합니다.

+0

I : 그래서 모든 당신은 샘플이 탐색 속성을 사용합니다 TableB는 외래 키들로 구성되어 있으므로 보이지 않습니다. –

3

데이터베이스에서 테이블을 가져 오면 엔티티 프레임 워크는 TableB 테이블을 제거하고 TableA 및 TableC에 다 대다 관계를 표시합니다. TableA에는 TableCs 탐색 속성이 있고 그 반대도 마찬가지입니다.

var tableARow= db.TableA.First(s => s.Id == 1); 
if (!tableARow.TableCs.IsLoaded) { tableARow.TableCs.Load(); } 

또는

var tableARow= db.TableA.Include("TableCs").First(s => s.Id == 1); 
+0

고마워요, 그게 더 비슷해. 단 하나. s.Id == 1이면 실제로 TableC의 ID이고 TableA가 아니라 1로 설정해야합니다. 내가 어떻게 그럴 수 있니? 그래서 돌아가고 싶은 TableA 엔티티이지만, TableC.ID = 1을 갖는 TableC를 채우고 싶습니다. –

+0

Id = 1 인 테이블 C의 행을 가진 테이블 A의 행 목록 var tablearows = db.TableC.Include ("TableAs"). 여기서 (c => c.Cid == 1) .Select (c => c.TableAs) .ToList(); – Puzzled