2012-07-02 26 views
1

我想從一個實體的協會項目單個值沒有運氣。在下面的查詢中,只需要TrainerAddress中的城市名稱。培訓師地址被映射爲培訓師的一個組成部分。NHibernate預測 - 如何項目從協會內的價值

session.QueryOver<Trainer>() 
    .JoinAlias(x=>x.TrainerAddress.City,()=> cityAlias, JoinType.LeftOuterJoin) 
    .OrderBy(x => x.Name).Asc 
    .SelectList(list => list 
     .Select(x => x.Id).WithAlias(() => dto.Id) 
     .Select(x => x.Name).WithAlias(() => dto.Name) 
     .Select(x => x.TrainerAddress.City.Name).WithAlias(() => dto.City))//issue projecting here 
    .TransformUsing(Transformers.AliasToBean<TrainerDTO>()) 
    .List<TrainerDTO>(); 

這可能嗎?

+0

這似乎可能。什麼是確切的問題? – henginy

回答

2

您正在爲TrainerAddress.City指定別名,但是您不在任何地方使用該別名? 我不是100%肯定,如果NHibernate的支持組件以及在QueryOver,我知道有使用標準一些問題,但也許這將工作:

session.QueryOver<Trainer>() 
    .JoinAlias(x=> x.TrainerAddress.City,()=> cityAlias, JoinType.LeftOuterJoin) 
    .OrderBy(x => x.Name).Asc 
    .SelectList(list => list 
     .Select(x => x.Id).WithAlias(() => dto.Id) 
     .Select(x => x.Name).WithAlias(() => dto.Name) 
     .Select(x => cityAlias.Name).WithAlias(() => dto.City)) 
    .TransformUsing(Transformers.AliasToBean<TrainerDTO>()) 
    .List<TrainerDTO>(); 
+0

不錯的馬丁。我指定加入到加載。似乎使用別名做了伎倆,似乎無法使用x.TrainerAddress.City.Name – Chev

+0

導航很高興知道它的工作 - 猜他們已經改進了對組件的支持:) –