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类中.
我正在使用别名来创建多连接和多个订单查询.
我已经使用 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)
我希望它对某人有帮助。
归档时间: |
|
查看次数: |
4956 次 |
最近记录: |