Sous-requête Entity Framework
Les gars, je suis nouveau sur Entity Framework et je vais avoir un bt d'un problème que j'essaie de résoudre depuis un certain temps. Fondamentalement, j'ai 4 entités: les utilisateurs, les groupes, les livres et les readingLists. Un utilisateur peut joindre à un groupe et un groupe qui comprend des livres défini par readingList. J'essaie d'afficher une liste de livres pour un groupe spécifique, le SQL ressemble à ceci:
SELECT * FROM Books b
WHERE b.Id IN (
SELECT BookID FROM ReadingList rl
WHERE rl.GroupID = '3')
- Je déterminer l'id de groupe de recherche en cours par l'interrogation de l'utilisateur actuel à partir d'un UserRepository et actuellement le 'obtenir des livres par le groupe" la méthode est à la recherche comme ceci:
//Get books by group
public IQueryable<Book> GetGroupBooks(string username)
{
UserRepository userRepository = new UserRepository();
int groupId = userRepository.GetUserGroupId(username);
IQueryable<Book> q = from b in entities.Books
where b.Id == 7 //temp - these values should be determined by
//rl in entites.ReadingList select rl.BookID where r.GroupID == groupID
select b;
return q;
}
Évidemment, c'est une mesure temporaire et retourne seulement un livre, mais j'ai compris pour référence. L'aide ou des conseils seraient appréciés.
Grâce
source d'informationauteur Apollo | 2011-03-26
Vous devez vous connecter pour publier un commentaire.
Je ne l'ai pas testé mais j'espère que cela va fonctionner.
Personnellement, je pense qu'il y a une meilleure solution(non testé bien sûr):
Sélectionnez d'abord de ReadList par GroupdID, puis rejoindre dans les livres sur BookID.
S'il vous plaît laissez-moi savoir si vous avez des questions.