2009-10-21 53 views
0

我看實體類似的東西(簡體):如何通過NHibernate Criteria API檢索唯一實體?

public class Person 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 

    public IList<Department> Departments { get; set; } 
} 

public class Department 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
} 

我通過查詢API標準數據庫中該有一定的名字部門應該匹配類似模式的所有人員。

恰巧一個人包含兩個或多個部門,其名稱包含查詢所使用的相同字符序列。因此同一個人多次返回。爲了抑制這一點,我知道我可以使用criteria.SetResultTransformer(Transformers.DistinctRootEntity);,但只有在結果沒有分頁的情況下,它纔有效。

當我分頁的結果時,我不僅需要獲得第一頁,但我也需要知道總共有多少實體。不幸的是,調用criteria.SetProjection(Projections.RowCount())時,結果轉換器不起作用,因爲沒有要轉換的結果。

我能以某種方式避免使用結果轉換器檢索整個人員列表,然後手動將正確部分從集合中取出嗎?

問候
奧利弗Hanappi

回答

1

您需要在您的SQL要求不同。一些信息,你可以找到here。第二個答案主要是

+0

當我使用不同的只有列將被返回,這是包括在不同的投影。 NHibernate會再次查詢數據庫以獲取所有數據嗎? – 2009-10-21 10:50:04

+0

什麼數據?正如我所看到的,你只需要行數或者你的意思是什麼? – Sly 2009-10-21 10:52:34

+0

啊,我明白你的意思了!仍然存在一個問題:當獲得分頁結果時,將檢索例如25人。之後,結果轉換器被應用,例如3人被刪除。那麼我的查詢會返回22個人,還是我錯了? – 2009-10-21 11:00:23

相關問題