使用 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.
您应该仍然可以通过这种方式访问内联别名。
如何使用 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.
您应该仍然可以通过这种方式访问内联别名。