WCF Data Service的常规使用——查询(1)

开发环境:.net4.0 + VS2010

1、首先建立一个“ASP.net Dynamic Data 实体 Web 应用程序”项目,这里命名为DemoDataService。

2、添加一个“ADO.NET 实体数据模型”,这里使用微软SQL Service的示例数据库AdventureWorks作为数据源,选择从数据库创建后选择两个有主外键关联的表Product和ProductCostHistory。如果需要实现主从关联的效果,需要勾选“在模型中加入外键列”。表之间的关系如下图:

image

将模型命名为AdventureWorksModel.edmx。最终生成的模型如下:

image

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的查询方法。下面简要举例说明。

查询前十条记录

http://localhost:45669/WcfDataService.svc/Product?$top=10

查询第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)

http://localhost:45669/WcfDataService.svc/Product(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

http://msdn.microsoft.com/zh-cn/library/cc668793.aspx

http://msdn.microsoft.com/zh-cn/library/ee358710.aspx

下一篇将简述如何使用在代码中使用OData SDK进行查询,以及如何在服务中使用存储过程、添加监听器。

posted @ 2011-04-07 21:02  宽厚  阅读(1180)  评论(0编辑  收藏  举报