【发布时间】:2014-09-17 08:01:20
【问题描述】:
我一直在努力尝试使用 NHibernate 查询一些东西。 我已经设法进行了一些非常简单的查询,但现在我正在尝试通过 NHibernate 构建一些自定义分页。
我想做的是双重的。 首先 (1),我希望能够根据 连接表中的列 对我的结果集进行排序。 假设我有一个“Person”表,它与“Address”表具有一对一(实际上是多对一)引用。 我想查询“人员”表(使用其字段),但想使用“地址”表中的字段进行排序。
我该怎么做?我尝试了以下两种方式
var resultset = GetCurrentSession().QueryOver<Person>()
.Where(x => x.Name == "...")
.JoinQueryOver<Address>(x => x.Address)
.OrderBy(x => x.HouseNumber).Desc
.Skip(...)
.Take(...)
.List();
// ==> could not execute query
Person person = null;
Address address = null;
var resultset = GetCurrentSession().QueryOver<Person>()
.JoinAlias(() => person, () => address.Persons)
.Where(() => person.Name == "...")
.OrderBy(() => address.HouseNumber).Asc
.Skip(...)
.Take(...)
.List();
// ==> could not resolve property: person of: Person
我的第二 (2) 问题是,我想拆分排序。 基于条件语句,我想添加一个不同的 OrderBy。 我可以就这样吗?
var query = GetCurrentSession().QueryOver<Person>()
.Where(x => x.Name == "...")
.JoinQueryOver<Address>(x => x.Address);
if(foo)
{
query = query.OrderBy(() => address.HouseNumber).Asc
}
else if (bar)
{
query = query.OrderBy(() => address.Street).Desc
}
var resultset = query
.Skip(...)
.Take(...)
.List();
非常感谢!
【问题讨论】:
-
您能否详细说明第一个异常(“无法执行查询”)?除此之外,感谢您发布一个写得很好的问题
标签: c# pagination fluent-nhibernate sql-order-by queryover