让OData和NHibernate结合进行动态查询
|
OData是一个非常灵活的RESTful API,如果要做出强大的查询API,那么OData就强烈推荐了。 OData的特点就是可以根据传入参数动态生成Entity Framework的查询,最终实现动态的SQL的查询。但是在项目有时我们并没有采用Entity Framework,而是采用的NHibernate,那么该怎么用OData呢? 经过一段时间的Google和研究,终于找到了一个好的方案。 在OData API查询时,用户前端是url跟参数,但是在服务器端,我们是接收到的是一个ODataQueryOptions ODataQueryOptions转换为HQL的项目在这里: Filter和OrderBy属性都会被转换成HQL,然后我们就需要进行NHibernate的查询了。 QueryResult对于一般的分页查询来说,我们应该会有两个查询,一个是查询满足条件的数据总条数,另一个是返回当前页的数据集。但是似乎OData并不支持返回这样的数据类型,OData支持的是Entity的List,如果我们重新定义了一个对象QueryResult: [DataContract]QueryResult然后在Controller中返回QueryResult,那么系统就会报406的错误。其实系统给我们提供了一个专门分页返回的对象,我们可以将Service返回的QueryResult封装成PageResult再返回即可。 PageResult里面有个NextPage的URI参数,我们可以传Null。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 在IE7 / IE8中未定义window.XMLHttpRequest
- Asp.net形成认证cookie,不符合IIS7超时
- asp.net-mvc – Chrome34忽略域名为“.cloudapp.net”的coo
- asp.net-mvc – MVVM ViewModel vs. MVC ViewModel
- asp.net – 在IIS中有类似cron作业的东西吗?
- asp.net – 如何在抛出请求验证异常时显示自定义错误页面?
- asp.net-mvc – ASP.Net MVC中的自我AJAX更新部分视图/控制
- asp.net – 您是否将助手类存储在单独的程序集中?
- asp.net – 高级:HttpModule Init()方法在应用程序的生命中
- asp.net-mvc – 如何在MVC 4 API中打印JSON脚本
- asp.net – 异步HttpWebRequest,从Web应用程序中
- asp.net – 如何检查SQL Server代理是否正在运行
- asp.net – 不能得到内容的内容,因为内容不是文字
- 如何将asp.net文本框滚动到底部
- asp.net-mvc – 是否可以手动更新ModelState.IsV
- asp.net-mvc-3 – jQuery Mobile/MVC:使用Redir
- asp.net-mvc – 无法安装Asp.net MVC 3
- ASP.NET对大文件上传的解决方案
- asp.net-mvc – MVC – 编辑对象列表
- asp.net-mvc-4 – ASP.NET MVC 4网站速度问题
