2009-12-29 4 views
0

J'ai un problème avec cette requête entité que j'espère obtenir de l'aide..net requête entité

Dans l'ensemble, ce que j'essaie de faire est de rechercher des entrées dans le tableau GoalNotes ainsi que d'inclure la référence Employee pour chaque note. La table GoalNotes est associée à une clé étrangère associée au tableau Employee.

J'essaie alors d'interroger la table GoalNotes en fonction d'un ID d'objectif spécifique. La table GoalNotes dispose également d'une relation au tableau Goal.

J'ai trois tableaux qui ressemblent à ce qui suit:

employé Id, FirstName, LastName

GoalNotes Id, but, Description de, employés, CreatedDt

Objectif Id, description, CreatedDt

La requête que je suis en train d'utiliser ressemble à ceci:

public List<GoalNotes> LoadGoalNotes(int goalId) 
{ 
    var notes = from note in GoalNotes.Include("Employee") 
       where Employee.Any(e => e.Id == note.Employee.Id) 
       where note.Goal.Id == goalId 
       orderby note.CreatedDt descending 
       select note; 

    return notes.ToList(); 
} 

Cette méthode existe dans un fichier EntityContext qui contient une classe partielle pour mon objet entité. Le problème semble être dans la façon dont j'essaie d'inclure la référence employé. La requête fonctionne si je supprime la ligne where Employee.Any(e => e.Id == note.Employee.Id) (à l'exclusion de la référence de l'employé)

Merci d'avance!

+0

Je ne peux pas vous aider à corriger cette requête si vous ne dites pas ce que vous avez l'intention de faire. C'est clairement faux, mais autant que je sache, la partie que vous supprimez ne ferait rien d'utile de toute façon. Qu'essayez-vous d'accomplir en l'incluant? –

+0

J'ai mis à jour ma question pour être plus claire. J'espère que ça aide. Merci. –

Répondre

2

Pour inclure l'employé, vous appelez simplement Include - rien d'autre:

var notes = from note in GoalNotes.Include("Employee") 
      where note.Goal.Id == goalId 
      orderby note.CreatedDt descending 
      select note; 

L'EF comprend déjà la relation entre GoalNote et Employee (il est dans le EDMX), et vous n'avez pas besoin de dupliquer cette information dans chaque requête que vous écrivez.

+0

assez simple! Merci! –

Questions connexes