【问题标题】:Nhibernate linq where clause with boolean value具有布尔值的 Nhibernate linq where 子句
【发布时间】:2010-12-29 23:44:41
【问题描述】:

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

var 结果 = Session.Linq().Where(x=> x.Approved);

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

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

选择 this_.NewspaperId as Newspape1_33_0_, this_.Name as Name33_0_, this_.Approved as 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时报'

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

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

【问题讨论】:

    标签: linq-to-nhibernate


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-06-26
      • 1970-01-01
      • 2013-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多