我有以下架构:
DAL (NHibernate) -> BLL -> WCF (http) -> Clients
客户对域模型一无所知。 WCF与使用DTO对象的客户端通信。
其中一个客户端是一个网站(ASP.NET MVC),网格很少。我需要为这个网格实现排序。排序应该在服务端实现,因为客户端只接收请求的部分数据(分页)。
最好的方法是什么?现在,我有两种看似不太好的方法。
提前感谢您的帮助。
答案 0 :(得分:2)
如果您在DAL中使用NHibernate,我建议通过属性名称进行排序,然后使用Criteria api查询数据,您可以轻松添加属性以进行排序而不使用反射。我想到为同一数据提供36种不同的方法只是为了改变排序顺序......
答案 1 :(得分:1)
好的,在我的情况下,我找到了最好的解决方案 - 动态LINQ到NHibernate。 http://nhforge.org/blogs/nhibernate/archive/2011/11/17/dynamic-linq-to-nhibernate.aspx
var elist = session.Query<MyEntity>()
.OrderBy(“Name descending”)
.Skip(first)
.Take(count)
.ToList();
此外,OData似乎是一个好方法,但我没有时间改变现有的项目结构。
根据Criteria api - 如果它有办法返回IQueryable
而不是IList
以便与LINQ兼容,那将会很好。我不想将它用作默认查询引擎。
感谢所有人。你帮助我了解新事物!