zoukankan      html  css  js  c++  java
  • Silverlight WCF RIA服务(二十八)Silverlight 客户端 9

    自定义生成代码 对于WCF RIA Services,在某些情况下,我们想在客户端生成的代码中添加些东西。然而,我们不能直接定制生成代码,因为在下次中间层重新编译的时候会被覆盖掉。RIA Services在生成代码中提供了局部方法,这样我们可以在分开的代码文件中定制客户端代码。
      

    自定义生成代码
    对于WCF RIA Services,在某些情况下,我们想在客户端生成的代码中添加些东西。然而,我们不能直接定制生成代码,因为在下次中间层重新编译的时候会被覆盖掉。RIA Services在生成代码中提供了局部方法,这样我们可以在分开的代码文件中定制客户端代码。这些局部方法就如同“钩子”,通过它我们可以把自己的代码附加在生成代码上。只有当我们已经创建了对应的局部方法时,这些方法才能被调用。
    局部方法
    WCF RIA Services框架为域上下文类和实体类生成局部方法。
    对于域上下文类,提供了下面的局部方法。
    OnCreated():当DomainContext对象实例化时执行。

    对于实体类,提供了下面的局部方法。
    OnCreated():当实体对象实例化时执行。

    OnLoaded(boolean):在第一次装载实体并反串行化时,或当实体从服务端反串行化但已经在客户端存在时执行。

    On[PropertyName]Changing: 在验证之后,设定值之前,被调用。

    On[PropertyName]Changed: 在设定值之后,调用RaiseDataMemberChanged方法之前,被调用。

    On[CustomMethodName]Invoking: 调用定制方法之后,实际执行代码之前,被调用。

    On[CustomMethodName]Invoked: 定制方法调用并执行代码之后,被调用。

    实施局部方法
    要使用这些方法,我们添加一个与想定制的生成类相同名字和命名空间的局部类。应为自动生成的客户端代码与服务端项目的代码有一样的命名空间,所以我们局部类的命名空间通常是projectname.Web的格式。然后,在客户端代码必须执行的情况下,我们实施想要执行的方法。例如在一个域上下文被创建并装载时,我们添加如下代码:
     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    using System.Windows.Ria;
     
    namespace RIAServiceExample.Web
    {
      public partial class EmployeeDomainContext : DomainContext
      {
        partial void OnCreated()
        {
          this.Load(this.GetEmployeesQuery());
        }
      }
    }



    我们还可以在生成的实体类的局部方法中设置成员属性。例如,如果数据库中的员工表中包含一个名为CreatedBy字段,那么我们可以通过OnCreated()局部方法来设置这个属性的值。
     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    using System.Windows.Ria;
     
    namespace RIAServiceExample.Web
    {
      public partial class Employee : Entity
      {
        partial void OnCreated()
        {
          this.CreatedBy = WebContext.Current.User.Name;
        }
      }
    }

     

    Powered By D&J (URL:http://www.cnblogs.com/Areas/)
  • 相关阅读:
    oracle手工生成AWR报告方法
    oracle init.ora常用配置详解
    Statspack的使用
    控制用户的访问之权限、角色【weber出品必属精品】
    初识数据字典【weber出品必属精品】
    EMCA常用命令 【weber整理必出精品】
    全世界最详细的图形化VMware中linux环境下oracle安装(三)【weber出品必属精品】
    vi 快捷键【转】【weber整理必出精品】
    数据库对象(视图,序列,索引,同义词)【weber出品必属精品】
    解决linux下oracle进入sqlplus环境中后退键显示^H、上下键无效与ctrl+l无法清屏等问题【weber出品必属精品】
  • 原文地址:https://www.cnblogs.com/Areas/p/2172192.html
Copyright © 2011-2022 走看看