2010-05-13 72 views
5

我不太確定我想要做的最優雅的解決方案。NHibernate +尋呼+訂購

我有一個列出音樂列表的頁面,可以有數以千計的這些頁面,因此它們以20個批次分頁,我還在頁面頂部有4個鏈接來改變這些列表的排列方式。

按屬性排序可能位於不同的實體上,如Audio.AudioStats.NumComments或Audio.Artist.NumProfileViews。

我正在使用存儲庫模式和服務層。我的控制器只能訪問服務層,然後服務層訪問我的存儲庫。

我可以很容易地做分頁,我只是通過我的當前頁面,頁面大小到我的數據層......但我怎麼會安全地讓用戶決定我的實體的順序。

我正在使用S#arp Architecture 1.5.2如果這有什麼區別。

預先感謝您。

回答

1

你將不得不以某種方式將用戶的需求映射到一個order by子句。

大概你在做類似skip(n).take(m)這也需要orderby()條款。

鑑於您擁有一組固定的(已知)可能性,您可以將它們映射到枚舉或類似的地方,然後轉換爲相關的orderby()調用。

這意味着你不暴露UI層的屬性,但只傳遞到存儲庫層的意圖(作爲Sortby.ArtistProfileViews值或其他)。這個意圖如何映射到域對象上的屬性是如何分離的。