NHIbernate将OR Criteria Query添加到现有标准中

时间:2014-07-31 10:16:01

标签: c# sql hibernate nhibernate queryover

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

半代码示例。

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

接下来几行后我想根据变量添加AND或OR限制。

if(AND) model.(Here add AND restriction)< - 将现有的内容添加到model.RootCriteria.Add(限制)并运行

else if(OR) model.(Here add OR restriction)< - 向现有的我不知道如何添加OR

我希望收到的输出是:

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

1 个答案:

答案 0 :(得分:0)

我们如何使用条件的方式始终是.Add() opertion,需要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 ......

同时检查以下内容: