当前位置: 首页 > 面试题库 >

在NHibernate的queryover中使用OR子句

连翰
2023-03-14
问题内容

我正在使用Nhibernate。我正在通过queryover方法编写查询。我能够像下面的代码中那样编写and子句。它的工作正常。

db.QueryOver(Of Users)()
  .Where(Function(x) x.Role = "Guest")
  .And(Function(x) x.Block = 0)
  .And(Function(x) x.APPID = appId)
  .List();

但是我想使用Or子句代替And,或两者结合使用。我该如何实施。谢谢


问题答案:

语法 (如标签所示在C#中) 为:

  • Restrictions.Or(restriction1, restriction1)
  • Restrictions.Disjunction().Add(restriction1).Add(restriction2).Add(...

在这种情况下,可能是这样的 (再次在C#中,问题似乎使用了VB)

db.QueryOver<Users>()()
  .Where((x) => x.Role == "Guest")
  .And(Restrictions.Or(
       Restrictions.Where<Users>((x) => x.Block == 0)
     , Restrictions.Where<Users>((x) => x.APPID == appId)
  ))
  .List<Users>();


 类似资料:
  • 问题内容: 我已经在我的方言子类中注册了一个SQL函数 可以在像这样的查询中使用 产生SQL 但是我真正想要的是 不幸的是,我似乎无法让SelectMax接受Projections.SqlFunction。能做到吗 问题答案: 您需要将NHUtil更新为DateTime: 否则,您将只处理日期部分。 您的查询很好,您只需将其包装在Projections.Max()中,如下所示: 我刚刚快速编写了一

  • 问题内容: 我正在尝试使用一个简单的已提交字段在MySQL中获取记录。更准确地说,用户输入名称(名字或姓氏或全名),服务器应返回匹配的行。 到目前为止,我正在做的事情是这样的: 暂时可以正常工作,但是(显然)当用户提交全名时,该方法将无法正常工作。有没有办法在整个“ WHERE类型条件”和“ HAVING类型条件”之间添加OR?这样,我可以做类似的事情: 我知道我可以拆分原始字符串,但这会产生一些

  • 问题内容: 我正在尝试获取id = 3或id = 9或id = 100的内容…请记住,我可以拥有几百个这些ID。 编写查询的最有效方法是什么? 问题答案:

  • 问题内容: 如何使用Criteria编写以下SQL: 问题答案: 要使用NHibernate,产生如下查询: 我们必须选择: 将子选择映射为实体。 创建原始SQL查询 第一种选择是创建一些,并将其映射为一个实体。如果我们不喜欢视图(或无法创建视图),则可以使用NHibernate映射元素element的功能 : 第二种选择是关于使用NHibernate API创建本机/原始SQL: 它没有从映射中

  • 主要内容:Oracle OR运算符介绍,Oracle OR运算符的例子在本教程中,我们来学习如何使用Oracle 运算符来组合两个或更多的布尔表达式。 Oracle OR运算符介绍 运算符是一个逻辑运算符,它组合了布尔表达式,如果其中一个表达式为真(),则返回。 以下说明运算符的语法: 下表显示了运算符在,和值之间的结果。 值 TRUE FALSE NULL TRUE TRUE TRUE TRUE FALSE TRUE FALSE NULL NULL TRUE NU

  • 问题内容: 在处理大型数据库时,哪个性能更好,还是在SQL子句中? 它们的执行方式有什么不同吗? 问题答案: 我假设您想知道以下两者之间的性能差异: 根据MySQL手册,如果值是常数,则对列表进行排序,然后使用二进制搜索。我可以想象一下,它们以不特定的顺序进行逐一评估。因此在某些情况下速度更快。 最好的了解方法是使用特定数据在数据库中同时对它们进行概要分析,以查看哪种方法更快。 我在具有10000