2010-09-27 10 views
0

Si je tente d'ajouter une clause where, contenant un filtre lambda sur un champ booléen, à une requête LINQ NHibernate, le filtre semble être ignoré:Nhibernate LINQ clause where avec valeur booléenne

var result = session. Linq(). Où (x => x.Approved); Session est une iSession et un journal est un objet simple avec les champs NewspaperId int, Name - varchar (50) et Approved - bit.

Quand je lance ce SQL suivante est générée:

SELECT this_.NewspaperId comme Newspape1_33_0_, this_.Name comme Name33_0_, this_.Approved comme Approved33_0_, des journaux this_

il semble ignorer le lambda si c'est pour un champ booléen. Cela fonctionne bien pour le champ de nom, à savoir:

var résultat = Session.Linq(). Où (x => x.Name == "The Times");

résultats dans: exec sp_executesql N'SELECT this_.NewspaperId comme Newspape1_33_0_, this_.Name comme Name33_0_, this_.Approved comme Approved33_0_ de journaux this_ OÙ this_.Name = @ p0' , N '@ p0 nvarchar (9) ', @ p0 = N'The Times'

Quelqu'un sait pourquoi je ne peux pas interroger sur une valeur booléenne?

Toute aide est grandement appréciée J'utilise NHibernate 2.1 avec LINQ

Répondre

1

Il a été un moment que vous avez probablement votre réponse ailleurs il y a longtemps. Mais pour répondre à votre question: je ne vois pas pourquoi cela ne fonctionnerait pas. En fait, je l'ai essayé à la fois dans NH2.1.2 et NH3.0.0. Cela fonctionne dans les deux cas (vérifié en regardant la requête avec SQL Profiler). Il serait donc intéressant de voir la cartographie que vous avez utilisée, perhapse il y a quelque chose de mal là.