2010-05-13 6 views
5

No estoy seguro de la solución más elegante para lo que estoy tratando de hacer.NHibernate + Paging + Pedidos

Tengo una página que enumera las listas de música, puede haber miles de ellas, por lo que están paginadas en lotes de 20, también tengo 4 enlaces en la parte superior de la página para cambiar la forma en que se ordenan estos listados.

El ordenamiento por propiedades podría ubicarse en entidades diferentes como Audio.AudioStats.NumComments o Audio.Artist.NumProfileViews.

Estoy usando el patrón de repositorio y una capa de servicio. Mis controladores solo pueden acceder a la capa de servicio, luego la capa de servicio accede a mis repositorios.

Puedo hacer la paginación con bastante facilidad, simplemente paso en mi página actual, y el tamaño de página a mi capa de datos ... pero ¿cómo puedo dejar que el usuario decida con seguridad sobre el pedido de mis entidades.

Estoy usando S # arp Architecture 1.5.2 si eso hace alguna diferencia.

Gracias de antemano.

Respuesta

1

Vas a tener que asignar los deseos de los usuarios a una orden por cláusula de alguna manera.

Presumiblemente está haciendo algo como skip(n).take(m) que también necesitará una cláusula orderby().

Dado que tiene un conjunto fijo de posibilidades (conocidas), puede asignarlas a una enumeración o similar que luego puede traducir a la correspondiente llamada orderby().

Esto significa que no expone las propiedades en la capa de interfaz de usuario, sino que solo pasa el intento a la capa de repositorio (como un valor Sortby.ArtistProfileViews o lo que sea). La forma en que se asigna ese intento a las propiedades en sus objetos de dominio está aislada en su capa de repositorio.