WCF RIA 服务 (六)- 创建RIA Services 类库

时间:2022-09-21 03:12:50

RIA Services 类库允许我们创建能够重复使用的中间层和表现层逻辑。然而,使用RIA Services类库要比创建RIA Services解决方案复杂的多。
在本节演练中,将创建一个拥有RIA Services类库代码的SL应用程序。简单起见,把类库放在了SL应用程序相同的解决方案里。当然,类库也可以放在分开的解决方案中。

 

创建包含WCF RIA Services类库的SL解决方案

  •  在VS中,创建一个命名为ExampleSilverlightApp的新SL应用程序。
  •  在 新Silverlight 应用程序 对话框中,不要勾选 WCF RIA Services 选项。这个应用程序不需要SL客户端和服务端之间的RIA Services link,因为这个RIA Services link将放在类库中。
  • 在资源管理器中,右键点击解决方案,选择 添加->新建项目 。 出现添加新项目 对话框。
  • 在 Silverlight类型中,选择WCF RIA Services Class Library 模板并命名为 AdvertureWorksClassLibrary。 WCF RIA 服务 (六)- 创建RIA Services 类库
  • 点击OK。在解决方案中将包含四个项目,如下所示:
    WCF RIA 服务 (六)- 创建RIA Services 类库

 

  • 右键点击 ExampleSilverlightApp.Web 项目,并选择 添加引用 。 添加引用对话框出现。
  • 项目 标签中,选择 AdventureWorksClassLibrary.Web 项目,点击 OK。
  • 右键点击 ExampleSilverlightApp 项目,选择 添加引用
  • 项目 标签中, 选择 AdventureWorksClassLibrary 项目,点击 OK。


创建中间层库

 

  1. 在 AdventureWorksClassLibrary.Web项目中,添加一个名为 AdventureWorksModel.edmx的 ADO.NET Entity Data Model。
  2. 在实体数据模型向导中,把 Product 表加到实体模型中。
  3. 生成解决方案。
  4. 右键点击 AdventureWorksClassLibrary.Web项目,选择 添加->新项
  5. 选择 Domain Service Class 模板,并命名为ProductsDomainService。
  6. 点击 添加 。 出现 添加新域服务类 对话框。
  7. 从domain service中提供的数据模型中选择 Product , 并点击 OK
  8. 生成解决方案。
  9. 在解决方案中,对每个项目选择 显示所有文件-Show All Files 。我们可以发现仅在AdventureWorksClassLibrary项目中存在Generated_Code文件夹。虽然没有为 ExampleSilverlightApp项目生成代码,但我们仍可以使用在AdventureWorksClassLibrary项目中生成的代码。因为在ExampleSilverlightApp项目和AdventureWorksClassLibrary项目间存在项目引用。


在 SL项目中使用生成的代码

 

  1. 右键点击 ExampleSilverlightApp项目,选择 添加引用
  2. 添加对 System.Windows.Ria 程序集的引用。通过导航到[Program Files]\Microsoft SDKs\RIA Services\v1.0\Livryries\Silverlight, 可以找到这个程序集。
  3. 在 ExampleSilverlightApp项目中,打开MainPage.xaml文件。
  4. 从工具箱中,拖拽DataGrid 控件到Grid内。 这会自动添加一个XML命名空间和一个数据程序集引用。
  5. 命名DataGrid为 ProductsGrid, 如下所示:
WCF RIA 服务 (六)- 创建RIA Services 类库WCF RIA 服务 (六)- 创建RIA Services 类库代码
1  < usercontrol  class ="RIAServicesExample.MainPage"  xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  data ="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"  x ="http://schemas.microsoft.com/winfx/2006/xaml"  d ="http://schemas.microsoft.com/expression/blend/2008"  mc ="http://schemas.openxmlformats.org/markup-compatibility/2006"  ignorable ="d"  designwidth ="400"  designheight ="300" >   
2    
3       < grid  background ="White"  name ="LayoutRoot" >   
4         < data:datagrid  name ="ProductsGrid" ></ data:datagrid >   
5       </ grid >   
6  </ usercontrol >  

 

   6.  打开MainPage.xaml的后台代码。

 7.  添加下面的代码来检索产品。

 

WCF RIA 服务 (六)- 创建RIA Services 类库WCF RIA 服务 (六)- 创建RIA Services 类库代码
 1  using  System;   
 2  using  System.Collections.Generic;   
 3  using  System.Linq;   
 4  using  System.Net;   
 5  using  System.Windows;   
 6  using  System.Windows.Controls;   
 7  using  System.Windows.Documents;   
 8  using  System.Windows.Input;   
 9  using  System.Windows.Media;   
10  using  System.Windows.Media.Animation;   
11  using  System.Windows.Shapes;   
12  using  AdventureWorksClassLibrary.Web;   
13  using  System.Windows.Ria;   
14    
15  namespace  ExampleSilverlightApp   
16  {   
17       public   partial   class  MainPage : UserControl   
18      {   
19           private  ProductDomainContext _productContext  =   new  ProductDomainContext();   
20    
21           public  MainPage()   
22          {   
23              InitializeComponent();   
24    
25              LoadOperation < product >  loadOp  =   this ._productContext.Load( this ._productContext.GetProductsQuery());   
26              ProductsGrid.ItemsSource  =  loadOp.Entities;   
27          }   
28      }   
29  }   
30  </ product >  

 

   8.  打开AdventureWorksClassLibrary.Web项目中的App.Config文件,分别拷贝<connectionStrings>,<system.serviceModel>, 和<httpModules>元素。把它们粘贴到ExampleSilverlightApp.Web项目的Web.config文件中。现在Web.config文件看上去和下面的代码类似,当然你应该提供和你的环境相关的链接信息。

WCF RIA 服务 (六)- 创建RIA Services 类库WCF RIA 服务 (六)- 创建RIA Services 类库代码
 1  < configuration >   
 2       < connectionstrings >   
 3           < add  name ="AdventureWorksLT2008Entities"  string ="Data Source=example;Initial Catalog=AdventureWorksLT2008;Integrated Security=True;MultipleActiveResultSets=True"  connectionstring ="'metadata="  providername ="System.Data.EntityClient"  provider ="System.Data.SqlClient;provider" >   
 4       </ add >   
 5       < system.servicemodel >   
 6           < servicehostingenvironment  aspnetcompatibilityenabled ="true" >   
 7       </ servicehostingenvironment >   
 8       < system.web >   
 9           < compilation  debug ="true"  targetframework ="4.0" >   
10       < httpmodules >   
11           < add  name ="DomainServiceModule"  type ="System.Web.Ria.Services.DomainServiceHttpModule, System.Web.Ria, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" >   
12       </ add >   
13       </ httpmodules >   
14       < system.webserver >   
15         < modules  runallmanagedmodulesforallrequests ="true" >   
16       </ modules >   
17    
18  </ system.webserver >   
19    
20  </ compilation ></ system.web ></ system.servicemodel ></ connectionstrings ></ configuration >   
21  < configuration >
22       < connectionstrings >
23           < add  name ="AdventureWorksLT2008Entities"  string ="Data Source=example;Initial Catalog=AdventureWorksLT2008;Integrated Security=True;MultipleActiveResultSets=True"  connectionstring ="'metadata="  providername ="System.Data.EntityClient"  provider ="System.Data.SqlClient;provider" >
24       </ add >
25       < system.servicemodel >
26           < servicehostingenvironment  aspnetcompatibilityenabled ="true" >
27       </ servicehostingenvironment >
28       < system.web >
29           < compilation  debug ="true"  targetframework ="4.0" >
30       < httpmodules >
31           < add  name ="DomainServiceModule"  type ="System.Web.Ria.Services.DomainServiceHttpModule, System.Web.Ria, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" >
32       </ add >
33       </ httpmodules >
34       < system.webserver >
35         < modules  runallmanagedmodulesforallrequests ="true" >
36       </ modules >
37 
38  </ system.webserver >
39 
40  </ compilation ></ system.web ></ system.servicemodel ></ connectionstrings ></ configuration >  
41 

 

 

   9.  运行应用程序。看到如下结果。
 

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/blackant2/archive/2010/04/08/5461309.aspx