NHibernate + Пейджинг + Заказ - PullRequest
5 голосов
/ 13 мая 2010

Я не совсем уверен в самом элегантном решении того, что я пытаюсь сделать.

У меня есть страница, на которой перечислены музыкальные списки, их может быть тысячи, поэтому они разбиты на страницы по 20, у меня также есть 4 ссылки вверху страницы, чтобы изменить порядок упорядочивания этих списков.

Сортировка по свойствам может быть расположена на разных объектах, таких как Audio.AudioStats.NumComments или Audio.Artist.NumProfileViews.

Я использую шаблон репозитория и сервисный уровень. Мои контроллеры могут получить доступ только к сервисному уровню, тогда сервисный уровень обращается к моим репозиториям.

Я могу довольно легко выполнить разбиение по страницам, я просто передаю свою текущую страницу и размер страницы своему слою данных ... но как бы я мог безопасно позволить пользователю принять решение о порядке моих сущностей.

Я использую S # arp Architecture 1.5.2, если это имеет какое-либо значение.

Заранее спасибо.

1 Ответ

1 голос
/ 24 октября 2010

Вам придется каким-то образом сопоставлять желания пользователей с заказом по пунктам.

Предположительно, вы делаете что-то вроде skip(n).take(m), для которого тоже потребуется предложение orderby().

Учитывая, что у вас есть фиксированный набор (известных) возможностей, вы можете отобразить их в enum или аналогичные, которые затем переводите в соответствующий вызов orderby().

Это означает, что вы не выставляете свойства на уровне пользовательского интерфейса, а только проходите через намерение к уровню хранилища (как значение Sortby.ArtistProfileViews или как угодно). То, как это намерение отображается в свойствах ваших доменных объектов, изолировано на вашем уровне хранилища.

...