使用 Nhibernate 和 QueryOver 添加可选的 where 参数

Adding optional where parameters with Nhibernate and QueryOver

如何使用 QueryOver 添加可选的 where 子句?

TL;DR

我正在尝试为应用程序实现搜索表单并使用 QueryOver。
一些搜索参数是可选的。

          var query =
            myDatabase.QueryOver(() => customerAlias)
                .JoinAlias(() => customerAlias.Projects, () => projectAlias)
                .Where(() => projectAlias.IsClosed >= 1)
                ... possibly add more stuff

QueryOver 与通常的 Linq 语句一样延迟执行。它只会在您通过调用终结方法(例如 .List<T>().

强制执行时执行
var query =
    myDatabase.QueryOver(() => customerAlias)
        .JoinAlias(() => customerAlias.Projects, () => projectAlias)
        .Where(() => projectAlias.IsClosed >= 1);

if (myCondition) {
    query = query.Where(...);
}

var result = query.List<T>(); //Or however else you want to make it execute.

您应该仍然可以通过这种方式访问​​内联别名。