• WCF Ria Service 理解制图版本【待续】


     WCF Ria Service三个常用的核心类关系:

    DomainService与LinqtoEntitiesDomainService /LinqToSqlDomainService关系制图如下:

    DomainService类是领域服务的基类-域名服务是用WCF Service来封装一个应用程序的业务逻辑. 一旦你实例化一个Domain Service. Domain Service会对外暴露出与这个Domain Service相关l连的业务逻辑层 访问代理proxy.

    LinqToEntitiesDomainService类:对领域服务提供了一个利用Linq操作实体的基类. 同理而言LinqToSqlDomainService同样一个操作领域服务的基类. 只不过方式变成了Linq to SQL.

    一个域名服务类必须注明EnableClientAccessAttribute属性,以使服务对给客户端项目时可见的. 如下创建一个实例来说明如何使用Ria Service在Silverlight访问数据.

    A:创建一个Silverlight Application.

    B:在创建项目时指定Silverlight版本为4.0 注意必须启用RIA Service.

    Silverlight 添加RIa Service后空白解决方案.

    D:如何通过RIA Service在Silverlight访问数据. 基本思路如下;

    E:基于解决方案中服务器端Silverlight2.Web添加一个数据实体类:ADO.NET Entity Data Model.

    出现一个添加向导 选择实体类数据源-来自数据库:

    下一步. 建立一个数据库有效连接. 下一步 选择指定数据库下实体数据对应的表:

    ok即完成了数据实体的创建.需要注意实体所在命名空间支持自定义. 即将在Silverlight2客户端程序引用它. 也可以选中该文件在属性中找到CurrentNameSpace直接修改该文件所在命名空间.

    F:在解决方案服务器端Silverlight2.Web中添加领域服务Domain Service文件:

     出现创建向导.如下:

     发现在向导中Domain Service Class 要选择实体类是空. 注意在创建Ria Service中每做一次修改都需要Ctra +Shit+B快捷键重写生成一下解决方案.

    Enable Client Access指定在Silverlight客户端可编辑的 选中实体类中Customer表.ok 生成一个Domain Service. 这时解决方案自动生成一个DomainService1.CS文件.

    该文件特点如下:

    (1)该 CustomerDomainService 继承于抽象的LinqToEntitiesDomainService类 。这个基类是自动使用的域名服务公开一个与之像关联ADO.NET实体数据类Customer.

    (2)CustomerDomainService 类是标有EnableClientAccessAttribute 属性,以表明它是可见的客户端层Silverlight2项目中是可见的.

    (3)一个没有任何过滤和排序操作的GetCustomer()方法获得全部Customer表数据. 同理而言在这个类也可以定义增删改查相应数据操作方法.

    G:Silverlight客户端项目Silverlight2中引用.

    重写生成以下解决方案,在Silverlight客户端项目Silverlight2中查看所有文件.发现在Generated_Code文件下多了一个SilverlightApplication2.Web.g.CS代码文件

     打开该代码文件. 其特点如下:

    (1)WebContext 继承与类WebContextBase 生成的一个类

    (2) CustomerDomainContext 继承于类 DomainContext。这个类有一个方法名为 GetCustomersQuery 相对应的查询方法在域中创建服务

    (3) Customer 从派生类 Entity 生成的类是由Domain Service暴露公开的实体。该客户端 的Customer 实体类通服务器上Customer实体类向对应匹配/

    G:在Silverlight中获得对应数据:

    在MainPage.XAMl中必须导入两个命名空间: 一个是定义数据实体所在命名空间[即在创建ADO.NET Entity指定空间] 另外一个是Domain Service所在命名空间[默认为项目名称].

    在MainPage放入一个DataGrid来测试是否获得数据. 后台编码如下:

    代码
     1 public partial class MainPage : UserControl
     2     {
     3         private CustomerDomainContext _customerContext = new CustomerDomainContext();
     4 
     5         public MainPage()
     6         {
     7             InitializeComponent();
     8             
     9             LoadOperation<Customer> loadOp = this._customerContext.Load(this._customerContext.GetCustomersQuery());
    10             CustomerGrid.ItemsSource = loadOp.Entities;
    11         }
    12     }
    13 

    测试结果:

    一个完整通过Ria Service获取数据库MSSQL中数据过程如上.

  • 相关阅读:
    javascript中replace()
    防止IE6出现BUG的十种常见解决方法
    IE6 重复字符的bug
    IE6 BUG大全
    display:inline
    JavaScript 图片上传预览效果
    用一行代码让w3wp进程崩溃,如何查找w3wp进程崩溃的原因
    近期学习任务
    气死我的存储过程和用户定义函数
    Damn,China Mobile!!!!
  • 原文地址:https://www.cnblogs.com/chenkai/p/1728212.html
Copyright © 2020-2023  润新知