NHibernate:ProjectionList:我们可以为Orderby创建动态投影列表吗?

时间:2015-03-15 00:29:08

标签: nhibernate queryover nhibernate-projections

我正在NHibernate中进行查询,其中用户可以为某些选定字段提供排序顺序。我需要在 QueryOver 中使用实体中的字段名称进行OrderBy(),但是在使用投影列表时我会这样。

SELECT
     this_.Number as y0_,
     scc3_.Code as y1_,

FROM sometable
WHERE 1=1 ORDER BY this_.Number as y0_,
 scc3_.Code as y1_ asc

选择列的投影列表与orderby投影列表不同,我没有使用.WithAlias()

sortProjectionList.Add(Projections.Property(() => stock.Number));
sortProjectionList.Add(Projections.Property(() => scc.Code));

如何创建没有带自定义名称的别名或别名的投影列表?

由于

1 个答案:

答案 0 :(得分:1)

我希望您在ORDER BY内部遇到生成关键字“AS”的问题,以防您传递这样的投影:

// NHibernate will leave few AS, except the last
query.OrderBy(sortProjectionList).Asc();

为避免这种情况,我们可以这样做:

// NHibernate will solve each projection separately
for (var index = 0; index < sortProjectionList.Length; index++)
{
    query.OrderBy(sortProjectionList[index]).Asc();
}