2011-11-21 3 views
2

이 방법을 간결하게 만드는 방법은 없나요? 위의내부 조인을 위해 엔티티에 linq를 사용하여 더 succint하게 만들기

var model = 
(
    from MvrTable in 
    LinqEntitiesCtx.Mvrs 

    join MvrMedsTable in LinqEntitiesCtx.MvrMeds 
    .Where(Id => Id.FKMvrId == 1)//inner join will be fast with this! 

    on MvrTable.PKMvrId equals MvrMedsTable.FKMvrId 

    join MvrLocationTable in LinqEntitiesCtx.MvrLocations 
    on MvrTable.PKMvrId equals MvrLocationTable.FKMvrId 

    join MvrEmployeeTable in LinqEntitiesCtx.MvrEmployees 
    on MvrTable.PKMvrId equals MvrEmployeeTable.FKMvrId 

    //notice i am using a different primary key that previouslly 
    join MvrMedsAdminRouteTable in LinqEntitiesCtx.MvrMedsAdminRoutes 
    on MvrMedsTable.PKMvrMedsId equals MvrMedsAdminRouteTable.FKMvrMedsId 

    select new 
    { //here I choose the columns I want to display 
     MvrTable.PKMvrId, 
     MvrTable.VarianceDescription, 
     MvrTable.CaseNumber, 
     MvrTable.DateOfReport, 
     MvrTable.DateOfVariance 
    } 
); 

동등한 SQL 코드 : 나는 '의 from로 S'는 join을 변경 믿고

SELECT [t0].[PKMvrId], [t0].[VarianceDescription], [t0].[CaseNumber], [t0].[DateOfReport], [t0].[DateOfVariance], [t1].[PKMvrMedsId] 
FROM [Mvrs] AS [t0] 
INNER JOIN [MvrMeds] AS [t1] ON ([t0].[PKMvrId]) = [t1].[FKMvrId] 
INNER JOIN [MvrLocations] AS [t2] ON ([t0].[PKMvrId]) = [t2].[FKMvrId] 
INNER JOIN [MvrEmployees] AS [t3] ON [t0].[PKMvrId] = [t3].[FKMvrId] 
INNER JOIN [MvrMedsAdminRoutes] AS [t4] ON ([t1].[PKMvrMedsId]) = [t4].[FKMvrMedsId] 
WHERE [t1].[FKMvrId] =ParamMvrId 
+0

오해의 소지가 생겨서 정말 죄송합니다. 각 테이블에서 데이터를 가져 오는 것으로 가정합니다. – hidden

답변

1

Associations을 사용하면 더 간단하게 작성할 수 있습니다. 뭔가 (완료되지 않음) :

var model = from MvrTable in LinqEntitiesCtx.Mvrs 
      where MvrTable.MvrMeds.MvrLocations.Any() //These are the Associations 
      select new 
      { 
       MvrTable.PKMvrId, 
       MvrTable.VarianceDescription, 
       MvrTable.CaseNumber, 
       MvrTable.DateOfReport, 
       MvrTable.DateOfVariance 
      }; 

이러한 테이블에서 데이터를 가져 오지 않아 실제로 조인 할 필요가 없습니다. 대신 Any을 사용해야하며 이는 SQL의 EXISTS에 해당합니다.

0

의이 좀 더 명확하게됩니다. 또한 엔티티 별칭을 약어로 표시 할 수도 있습니다.

관련 문제