技术开发 频道

Silverlight 3 RIA服务与ADO.NET集成

  这将把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语法感知也已经提示你了—下面的“错误提示”窗口中显示语法错误:“应输入类型”,见下图):

  

public class ProductsDataService : DataService< /* TODO: put your data source class name here */ >, IServiceProvider

  (4) 使用前面创建的域服务类ProductsDomain取代上面的TODO注释部分。其中,服务类的声明应当类似于下面形式:  

public class ProductsDataService : DataService, IServiceProvider

  (5) 在InitializeService()方法中,你会注意到还有一个TODO注释。现在,你使用下面代码取代注释中的内容:

public static void InitializeService(IDataServiceConfiguration config) {

  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/,然后按回车。

 

0
相关文章