我有 QueryObject 对象分离,我有第二个 ICriteria 对象条件。
ICriteria criteria = session.CreateCriteria<Theme>()
.CreateAlias("InceptionCycle", "ic", JoinType.LeftOuterJoin)
.CreateAlias("ClosingCycle", "cc", JoinType.LeftOuterJoin)
.Add(Restrictions.Le("ic.CycleMonth", cycleDate))
.Add(Restrictions.Or(
Restrictions.IsNull("cc.ID"),
Restrictions.Ge("cc.CycleMonth", cycleDate)));
QueryOver<Theme, Theme> detached = new GlobalTheme().GetQuery();
// and now how to make new query : detached AND criteria
是否可以在这两个标准对象之间合并/加入/添加AND条件?这样的事情(当然下面的代码行不起作用,因为Add方法不接受 ICriteria 类型):
detached.DetachedCriteria.GetExecutableCriteria(session).Add(criteria).List<Theme>();
我想要实现的原因是:
因此,为了处理 n 可能标准的所有组合,我必须创建至少n * n QueryObjects 。如果可以AND两个或更多个标准,我只需要创建 n * QueryObject *类型。
由于
答案 0 :(得分:1)
无法“合并”条件查询,但您可以为重用做的是创建一个方法,将您想要的任何限制添加到指定的查询。
一般示例,使用扩展方法:
var results = session.CreateCriteria<AnEntity>()
.Add(aSpecificRestriction)
.AddGenericFilters()
.List();
public void AddGenericFilters(this ICriteria criteria)
{
criteria.Add(whatever);
return criteria;
}