NHibernate分离式OrderBy

NHibernate分离式OrderBy,nhibernate,repository,queryover,detachedcriteria,Nhibernate,Repository,Queryover,Detachedcriteria,我正在使用存储库模式包装NHibernate实体。其中一个方法是public-IList-GetAll,它只返回该实体的所有项。实现是在Criteria或QueryOver中完成的 我想重载这个方法来接受排序顺序,类似这样:public IList getallnhorderfororder,我可以调用它并流畅地定义它的顺序。这可能吗?查询版本是首选,但不是必需的 使现代化 我领先了一点。我将参数定义为Expression path,这是QueryOver.OrderBy所期望的,但表达式缺少需

我正在使用存储库模式包装NHibernate实体。其中一个方法是public-IList-GetAll,它只返回该实体的所有项。实现是在Criteria或QueryOver中完成的

我想重载这个方法来接受排序顺序,类似这样:public IList getallnhorderfororder,我可以调用它并流畅地定义它的顺序。这可能吗?查询版本是首选,但不是必需的

使现代化
我领先了一点。我将参数定义为Expression path,这是QueryOver.OrderBy所期望的,但表达式缺少需要遵循的.Asc或.Desc规范。

您可以传入一个bool变量来确定它是Asc还是Desc-唯一棘手的部分是.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>();
}

对将Func传递给它。然后在查询会话中.GetAll.orderbyfunc;看来QueryOver无法执行此操作: