Nhibernate linq where子句,带有布尔值

时间:2010-09-27 23:37:47

标签: linq-to-nhibernate

如果我尝试将一个包含布尔字段上的lambda过滤器的where子句添加到nhibernate linq查询中,则过滤器似乎被忽略:

var result = Session.Linq()。Where(x => x.Approved);

Session是一个iSession,Newspaper是一个简单的对象,其中包含NewspaperId int,Name - varchar(50)和Approved - bit字段。

当我运行它时,会生成以下sql:

选择this_.NewspaperId作为Newspape1_33_0_,this_.Name作为Name33_0_,this_。批准为Approved33_0_,FROM Newspapers this _

如果是布尔字段,它似乎忽略了lambda。 它适用于名称字段,即:

var result = Session.Linq()。Where(x => x.Name ==“The Times”);

导致: exec sp_executesql N'SELECT this_.NewspaperId as Newspape1_33_0_,this_.Name as Name33_0_,this_.Approved as Approved33_0_ FROM Newspapers this_ WHERE this_.Name = @ p0',N'@ p0 nvarchar(9)',@ p0 = N'The次

有人知道为什么我不能查询布尔值吗?

非常感谢任何帮助 我正在使用NHibernate 2.1和linq

1 个答案:

答案 0 :(得分:1)

已经有一段时间了,所以很久以前你可能已经在其他地方得到了答案。但要回答你的问题:我看不出为什么这不起作用的原因。实际上我已经在NH2.1.2和NH3.0.0中尝试过了。它适用于两者(通过使用SQL事件探查器查看查询来验证)。因此,看到你使用的映射会很有趣,因为那里有一些错误。