这将把ADO.NET数据服务的框架添加到项目中,并将打开ProductsDataService.cs文件,其中已经包含了基本的支持服务的代码。
为了使ADO.NET数据服务正确运行,我们需要对系统自动生成的服务代码作一些修改。首先,我们需要把服务与一个数据源关联起来。在本例中,我们将使用我们的域名服务类—ProductsDomain,作为数据源。ProductsDomain提供了针对Product实体集的CRUD方法支持。通过配置ADO.NET数据服务工作于ProductsDomain类中,我们将把这些CRUD方法暴露为遵循ADO.NET数据服务协议的HTTP操作。
在配置完数据源后,我们还必须指定服务的访问控制规则。在本文例子中,我们将开放服务的完全的读/写访问支持。在实际应用开发中,则应当更谨慎地控制访问权限。
接下来,请继续遵循下面的步骤实现把ADO.NET数据服务与类ProductsDomain相关联,并且配置好Product实体集以支持读/写访问:
(3) 打开ProductsDataService.svc.cs文件,注意到服务类ProductsDataService派生自DataService,而且在系统自动生成的代码中,泛型参数T已不存在,代之以TODO注释—提示你加以修改(其实Visual Studio语法感知也已经提示你了—下面的“错误提示”窗口中显示语法错误:“应输入类型”,见下图):
(4) 使用前面创建的域服务类ProductsDomain取代上面的TODO注释部分。其中,服务类的声明应当类似于下面形式:
(5) 在InitializeService()方法中,你会注意到还有一个TODO注释。现在,你使用下面代码取代注释中的内容:
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
}
至此,我们就有了一个ADO.NET数据服务。此服务把从域服务类返回的数据暴露为一组可使用URI寻址的资源并且使用我们在类ProductsDomain中实现的CRUD方法映射HTTP方法。
在下面的步骤中,我们来试用一下上面创建的数据服务,以更好地理解这种功能及相应的传输格式。
6.观察运行结果(1)
现在,重新构建并运行示例工程。
在浏览器中,请导航到ProductsDataService.svc(预览此文件即可)。结果如下图所示:
注意到,图中显示了服务文档及基于AtomPub标准显示的内容。这个文档指出,我们拥有一个且仅有一个名字为Product的集合,而且可以通过一个同名字(Product)的相对的URL进行访问。
接下来,我们进行的第二个试验是把上面的URL更改为http://localhost:1623/ProductsDataService.svc/Product/,然后按回车。