NHibernate QueryOver使用别名的多个订单

Fab*_*ber 4 nhibernate alias sql-order-by queryover

这是我的情景:

 public IEnumerable<ISuperMerc> getSuperMercTree(string IDLanguage)
 {

      SuperMercModel SMer = null;
      SuperMercDescriptionModel descrSMer = null;
      MercModel Merc = null;
      MercDescriptionModel descrMerc = null;

      var qOver = _HibSession.QueryOver<SuperMercModel>(() => SMer)                    
                .JoinAlias(() => SMer.DescriptionsSM, () => descrSMer,JoinType.LeftOuterJoin)
                    .Where(() => descrSMer.IDLanguage == IDLanguage)
                .JoinAlias(() => SMer.Merc, () => Merc,JoinType.LeftOuterJoin)
                    .JoinAlias(() => Merc.DescriptionsMer, () => descrMerc,JoinType.LeftOuterJoin)
                        .Where(() => descrMerc.IDLanguage == IDLanguage)    
                .OrderByAlias(() => SMer.ID).Asc
                .ThenByAlias(() => descrMerc.Description).Asc 
                .Future<SuperMercModel>();

      return qOver;

 }
Run Code Online (Sandbox Code Playgroud)

我遇到了以下错误

无法解析属性:描述:SuperMercModel

奇怪的是,Description字段位于MercDescriptionModel类中,而不在SuperMercModel类中.

我正在使用别名来创建多连接和多个订单查询.

sto*_*ter 8

您原来的代码应该没有,如果你改变你使用SQL OrderByAliasThenByAlias定期OrderByThenBy条款.我有同样的问题,并为我解决了这个问题.


Fab*_*ber 1

我已经使用 HQL 解决了这里的代码

public IEnumerable<ISuperMerc> getSuperMercTree(string IDLanguage)
{
    string hql = string.Empty;

     hql = "select SM from SuperMercModel SM"
                + " left join fetch SM.DescriptionsSM DSM"
                + " left join fetch SM.Merc ME"
                + " left join fetch ME.DescriptionsMer DME"
                + " where DSM.IDLanguage = :IDLanguage "
                + " and DME.IDLanguage = :IDLanguage "
                + " order by SM.ID asc, DME.Description asc";

            IQuery query = _HibSession
                .CreateQuery(hql)
                .SetString("IDLanguage ", IDLanguage );

            IList<SuperMercModel> result = query.List<SuperMercModel>();


            return result;
}
Run Code Online (Sandbox Code Playgroud)

我希望它对某人有帮助。