NHibernate分离了OrderBy

时间:2012-06-12 18:43:30

标签: nhibernate repository queryover detachedcriteria

我使用存储库模式来包装NHibernate实体。其中一种方法是public IList<T> GetAll(),它只返回该实体的所有项目。实现在Criteria或QueryOver中完成。

我想重载此方法以接受排序顺序,如下所示:public IList<T> GetAll(NHOrderFor<T> order)我可以调用它并流利地定义顺序。这可能吗? QueryOver是首选但不是必需的。

更新

我前进了一点。我将参数定义为Expression<Func<T,object>> path,这是QueryOver.OrderBy()所期望的,但表达式缺少必须遵循的.Asc or .Desc规范。

1 个答案:

答案 0 :(得分:0)

您可以传入一个bool变量来确定它是asc还是desc - 唯一的&#34;棘手&#34;部分是.Asc和.Desc是属性,所以你必须将它们分配给结果(你不需要对结果做任何事情 - 它只返回相同的查询),例如:

public IList<T> GetAll(Expression<Func<T,object>> path, bool ascending) {
    if (ascending)
        queryOver = queryOver.OrderBy(path).Asc;
    else
        queryOver = queryOver.OrderBy(path).Desc;
    return queryOver.List<T>();
}