2010-03-08 8 views
0

demande comment la requête SQL suivante regarderait dans LINQ pour Entity Framework ...requête SQL requête imbriquée EF à partir

SELECT KPI.* 
FROM KeyPerformanceIndicator KPI 
    INNER JOIN (
     SELECT SPP.SportProgramPlanId 
     FROM SportProgramPlan PSPP 
      INNER JOIN SportProgramPlan ASPP 
       ON (PSPP.SportProgramPlanId = @SportProgramPlanId 
        AND PSPP.StartDate >= ASPP.StartDate 
        AND PSPP.EndDate <= ASPP.EndDate) 
    ) AS SPP 
     ON KPI.SportProgramPlanId = SPP.SportProgramPlanId 

Vive Anthony

+0

Une partie de votre requête est manquante - il y a deux '(' 'et un)'. Peut-être le début de la clause «WHERE»? – Jay

+0

Support fixe manquant ... –

Répondre

1

Difficile à dire sans voir les associations dans votre modèle. Y aurait-il une association auto-référentielle sur SportProgramPlan? Le code SQL semble être une erreur pour moi, PSPP et ASPP pourrait être le même enregistrement, et je ne suis pas sûr que vous le vouliez? En tout cas, il est trivial d'exclure ....

Voici une photo à elle:

var q = from kpi in Context.KeyPerformanceIndicators 
     where kpi.SportProgramPlan.Id = sportProgramPlanId 
      && Context.SportProgramPlans.Any(aspp => 
               spp.StartDate >= aspp.StartDate 
               && spp.EndDate <= aspp.EndDate)) 
     select ... 
+0

J'essaie de vous présenter la requête que vous avez fournie, mais la méthode 'Tout' ne fait pas partie de SportProgramPlans ... des idées? –

+0

Est-ce que 'KeyPerformanceIndicator.SportProgramPlans' 1: 1? –

+0

KeyPerformanceIndicator a seulement 1 SportProgramPlan mais 1 SportProgramPlan peut avoir plusieurs KeyPerformanceIndicators ... –

Questions connexes