NHibernate+;分页&x2B;订购

NHibernate+;分页&x2B;订购,nhibernate,pagination,repository,sql-order-by,Nhibernate,Pagination,Repository,Sql Order By,对于我正在尝试做的事情,我不太确定最优雅的解决方案 我有一个页面列出了音乐列表,可以有数千个这样的列表,所以它们被分为20个页面,我在页面顶部还有4个链接来改变这些列表的排序方式 排序依据属性可以位于不同的实体上,如Audio.AudioStats.NumComments或Audio.Artist.numprofileview 我使用的是存储库模式和服务层。我的控制器只能访问服务层,然后服务层访问我的存储库 我可以相当容易地进行分页,我只需将当前页面和页面大小传递到我的数据层……但是我如何安全地

对于我正在尝试做的事情,我不太确定最优雅的解决方案

我有一个页面列出了音乐列表,可以有数千个这样的列表,所以它们被分为20个页面,我在页面顶部还有4个链接来改变这些列表的排序方式

排序依据属性可以位于不同的实体上,如Audio.AudioStats.NumComments或Audio.Artist.numprofileview

我使用的是存储库模式和服务层。我的控制器只能访问服务层,然后服务层访问我的存储库

我可以相当容易地进行分页,我只需将当前页面和页面大小传递到我的数据层……但是我如何安全地让用户决定实体的顺序呢

我正在使用S#arp架构1.5.2,如果这有什么不同的话


提前谢谢。

您必须以某种方式将用户的需求映射到ORDERBY子句

假设您正在执行类似于
skip(n).take(m)
的操作,这也需要一个
orderby()
子句

假设您有一组固定的(已知)可能性,您可以将这些可能性映射到枚举或类似对象,然后将其转换为相关的
orderby()
调用

这意味着您不在UI层公开属性,而只将意图传递到存储库层(作为
Sortby.artistprofileview
值或其他内容)。该意图如何映射到域对象上的属性在存储库层中是独立的