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