【问题标题】:Is it possible to make an Nhibernate query generate columnName<>'value' rather than not(columnName='value')?)是否可以让 Nhibernate 查询生成 columnName<>'value' 而不是(columnName='value')?)
【发布时间】:2012-01-11 09:40:25
【问题描述】:

是否可以让 Nhibernate 查询生成具有 columnName'value' 而不是没有(columnName='value')的 Sql?

有人告诉我,使用 not() 可能会导致 Sql 性能问题超过 。

通常我会这样写我的查询...

criteria.Add(Restrictions.WhereNot<Region>(r => r.Id == region.Id));

导致

WHERE  not (this_.RegionID = 2048)

更新

这个问题表明,以一种或另一种方式编码不再存在任何性能问题

In SQL Server is there any difference between not(columnName='value') and columnName<>'value'?

【问题讨论】:

  • 它们应该针对任何合理的 SQL 产品(当然对于 SQL Server)进行相同的优化,所以我首先要挑战性能问题的假设。
  • 我认为该选项在标准 api 中不可用。但是您可以使用标准。添加(Expression.Sql("columnName 'value'"));
  • @an2 是的,这是一个有用的解决方法,谢谢。如果您将其添加为答案,我会接受它,假设没有其他问题出现。

标签: sql-server nhibernate nhibernate-criteria


【解决方案1】:

我认为该选项在标准 api 中不可用。但是您可以使用 Expression.Sql() 如下

criteria.Add(Expression.Sql("columnName <>'value'")); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 2017-09-27
    • 1970-01-01
    相关资源
    最近更新 更多