2009-10-21 7 views
4

Je souhaite récupérer la liste des rôles pour un utilisateur connecté.Comment gérer le jeu de résultats vide NHibernate LINQ?

Voici un segment de code qui lit les rôles utilisateur de la base de données.

ISession session = NHibernateHelper.GetCurrentSession(); 
      var data = from s in session.Linq<ApplicationUserRole>() 
        where s.AppUser.ID = 1 
        select s.Role.Name; 

      List<Role> list = data.ToList(); 

appuser: entité utilisateur Rôle: entité de rôle. Comme il n'y a pas de données dans la base de données pour l'ID utilisateur 1, il ne renvoie rien.

Les données de type retour sont NHibernate.Linq.Query et elles ne sont pas nulles.

Il renvoie l'erreur suivante lorsque je tente de le convertir en ToList();

« index était hors de portée doit être non négatif et inférieur à la taille de la collection Nom du paramètre:.. Index »

Comment puis-je gérer les jeux de résultats vide?

+1

+1: Ces types de contrariétés me font perdre la foi en Linq à NHibernate. –

Répondre

1

Cela devrait fonctionner ...

List<Role> list = data.Any() ? data.ToList() : new List<Role>(); 
+0

Non, il souffle juste sur Any() avec exactement le même message d'erreur. D'après ce que j'ai vu, je pense que c'est la façon de NHibernate Linq de vous dire "Je ne peux pas gérer votre expression". –