2010-06-18 7 views
0

Je tire mes cheveux par ici et je ne suis pas sûr de ce qui le cause.Nhibernate Linq Erreur sur Single ou par défaut

je la requête LINQ suivante:

return Session.Linq<CandidateAccountEntity>().SingleOrDefault(p => p.UserName.ToLower().Equals(userName.ToLower())); 

et son lancer l'erreur suivante:

Index was out of range. Must be non-negative and less than the size of the collection.

Si je tente de l'envelopper avec un chèque de:

if(Session.Linq<CandidateAccountEntity>().Any()) {...} 

alors j'obtiens l'erreur suivante:

could not execute query [ SELECT count(*) as y0_ FROM [CandidateAccountEntity] this_ inner join CFG.Account this_1_ on this_.AccountEntity 1_id=this_1_.AccountId ] [SQL: SELECT count(*) as y0_ FROM [CandidateAccountEntity] this_ inner join CFG.Account this_1_ on this_.AccountEntity 1_id=this_1_.AccountId]

à l'exception intérieure:

{"Incorrect syntax near '`'."}

Toute aide serait grandement, grandement apperciated. Je ne veux pas rester coincé ici vendredi après-midi:/

+0

Voir aussi: http://stackoverflow.com/questions/2598202/does-nhibernate-linq-support-tolower-in-where-clauses –

Répondre

1

ToLower n'est pas pris en charge dans le fournisseur NH 2.x Linq. Cela fonctionne avec le fournisseur intégré dans 3.x.

+0

Hmm, bien merdique. Y at-il de toute façon à ignorer le cas alors? – Chance

+0

En fonction de la base de données, vous pouvez utiliser un classement insensible à la casse pour ce champ. –