2016-09-20 2 views
0

나는이 아침에 의심의 여지가 있었고 대답을 얻을 수 없었다. 누군가가 나를 도울 수 있기를 바랍니다.두 테이블 두 가지 관계 ASP MVC

나는 두 테이블 (T1 & T2) 나는 관계를 모두 사용하여 두 테이블을 조인 및 LINQ를 사용하여 두 테이블의 세부 사항을 표시해야

T1 
-> Id (P) 
-> InstanceId (U) 
-> ObjectId (U) 
-> Name 

T2 
-> Id (P) 
-> InstanceId (F) (Foreign key for T1.InstanceId) 
-> ObjectId (F) (Foreign key for T1.InstanceId) 
-> Grade 

있습니다.

이 linq 쿼리를 사용했지만이 쿼리에서 t1과 t2를 선택하면 ObjectId 참조가 사용되지 않습니다 (예 : t12). 두 테이블을 모두 반환하는 방법을 모릅니다.

어떻게 해결할 수 있습니까? 두 관계를 모두 사용해야하고 두 테이블 값을 모두 가져 오려고합니다.

LINQ :

var result = from t1 in db.T1 
      join t2 in db.T2 on t1.InstanceId equals t2.InstanceId 
      join t12 in db.T2 on t2.ObjectId equals t12.ObjectId 
      select t1; 
+0

없음 질문에 관련 보인다. 어떤 ORM을 사용하고 있습니까? EF? 사실 후에 엔티티에 참여하지 말고 매핑에 관계를 추가해야합니다. –

답변

1

new 키워드를 사용해야합니다. 태그의

join clause

var result = 
     from t1 in db.T1 
     join t2 in db.T2 on new { ObjectId : t1.ObjectId , InstanceId = t1.InstanceId} equals 
          new { ObjectId : t2.ObjectId , InstanceId = t2.InstanceId} 
     select new 
     { 
      t1, 
      t2 
     } 
+1

@Neer 감사합니다, 이것은 내가 필요한 것입니다. 다시 한번 감사드립니다. –

0

는 다음과 같은 시도 :

var x = context.T1.Where(t => t.Id == context.T2.InstanceId) 
      .Select(x => new { 
       t, 
       t.Instance //use the related entity here) 
      }).ToList(); 

가 'X'당신의 기능에서 사용할 수있는 익명의 개체입니다. t는 T2와 관련된 T1의 변수이고, T2의 클래스에서 나는 부모에게 T1을 기대합니다. 그렇게하면 익명 개체에서 사용할 수 있습니다.

+0

감사합니다 @ RoelantM,하지만 나는 InstanceId와 ObjectId를 모두 사용하여 가입해야합니다. 그리고 나는 NEER로부터 예상되는 대답을 얻었다. 다시 한번 감사드립니다. –