WCF Data Service的常规使用——查询(1)
开发环境:.net4.0 + VS2010
1、首先建立一个“ASP.net Dynamic Data 实体 Web 应用程序”项目,这里命名为DemoDataService。
2、添加一个“ADO.NET 实体数据模型”,这里使用微软SQL Service的示例数据库AdventureWorks作为数据源,选择从数据库创建后选择两个有主外键关联的表Product和ProductCostHistory。如果需要实现主从关联的效果,需要勾选“在模型中加入外键列”。表之间的关系如下图:
将模型命名为AdventureWorksModel.edmx。最终生成的模型如下:
3、添加一个“WCF 数据服务”的新建项,这里命名为WcfDataService.svc。
修改WcfDataService.svc的后端代码文件为:
public class WcfDataService : DataService<AdventureWorksEntities>
{
// 仅调用此方法一次以初始化涉及服务范围的策略。
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.AllRead);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
}
}
4、运行项目,使用浏览器测试查询。
WCF 数据服务使用,OData的查询方法。下面简要举例说明。
查询前十条记录
查询第21-30条数据
http://localhost:45669/WcfDataService.svc/Product?$skip=20&$top=10
按指定的列查询(第21-30条数据的Name和ListPrice列)
http://localhost:45669/WcfDataService.svc/Product?$skip=20&$top=10&$select=Name,ListPrice
按Name排序的前十条数据
http://localhost:45669/WcfDataService.svc/Product?$top=10&$orderby=Name
按主键获取数据(ProductID=1)
按条件过滤(ProductID<=10)
http://localhost:45669/WcfDataService.svc/Product?$filter=ProductID le 10
关联查询(查询ProductID=707相关的ProductCostHistory
http://localhost:45669/WcfDataService.svc/Product(707)?$expand=ProductCostHistory
查询参数按照$filter、$inlinecount、$orderby、$skiptoken、$skip、$top、$select、$expand的顺序执行。
WCF Data Services 支持下列运算符:()、add、sub、mul、div、mod-取模、and、or、not、eq-等于、ne-不等、lt-小于、gt-大于、le-大于等于、ge-小于等于。
此外 WCF Data Services 还支持一些查询函数。
有关查询的详细内容可以参见MSDN:
http://msdn.microsoft.com/zh-cn/library/cc668784.aspx
http://msdn.microsoft.com/zh-cn/library/cc668787.aspx
下一篇将简述如何使用在代码中使用OData SDK进行查询,以及如何在服务中使用存储过程、添加监听器。