NHIbernate添加OR条件查询到现有的条件

本文关键字:条件 查询 添加 OR NHIbernate | 更新日期: 2023-09-27 18:15:57

我知道如何使用Disjunction()添加OR限制,但我需要添加到这组标准中,并且我总是需要至少2个标准。我想知道如何在现有的标准中添加单个OR。

半代码示例。

model.RootCriteria.Add(restriction) <-限制一(例如名称像'name')

接下来,在几行之后,我想根据变量添加AND或or限制到已经存在的

if(AND) model.(Here add AND restriction) <-添加AND到现有的只有model.RootCriteria.Add(限制),它工作

else if(OR) model.(Here add OR restriction) <-添加OR到现有的。我不知道如何做到这一点

我想接收的

输出是:

Where name like 'name ' (AND or OR) second restriction;

NHIbernate添加OR条件查询到现有的条件

我们处理标准的方式总是通过.Add()操作,它接受ICriterion

var criteria = session.CreateCriteria<Employee>();
    criteria.Add(
      Restrictions.On<Employee>((x) => x.LastName).IsLike("Xyz", MatchMode.Start)
    );

即使我们想要使用OR,我们也必须通过。add()来添加,就像这样:

    criteria.Add(Restrictions.Or(
        Restrictions.On<Employee>((x) => x.FirstName).IsLike("Abc", MatchMode.Start)
        , Restrictions.On<Employee>((x) => x.FirstName).IsLike("Def", MatchMode.Start)
    ));

技巧是Restrictions.Or也返回ICriterion

也检查这些:

  • 在NHibernate中使用OR子句
  • NHibernate QueryOver with WhereRestriction as OR
  • 15.2。缩小结果集