技术开发 频道

Silverlight 3 RIA服务编程中使用自定义方法及服务操作

 重要补充

 在RIA服务编程中,遵守既定的域操作方法约定显得非常重要,其重要意义在于:

 可以使开发人员投入较少的工作量。

 提供一致性的、富于美感的编程体验。

 实现通用型域驱动语言,而且提高了代码在团队开发中的可读性。

 (一)适用于所有域操作的规则

 归纳来看,适用于所有域操作的规则包括:

 域操作必须带有public修改符。

 如果第一个(或前面连续的几个)参数类型为实体类型的话,仅允许存在一个域操作方法。当查询方法返回一个IEnumberable或IQeryable类型时,只要应用到RiaServices相关操作,此类型将代表了一个实体。因此,要使其他域操作有效,必须确保存在一个查询类型的域操作方法。这种情况下存在的一个允许的例外是,不使用实体类型作为参数的域操作方法将是有效的域操作方法。

 域操作方法必须使用可串行化的类型作为参数及返回类型。

 (二)典型域操作方法编程约定

 1. 插入操作

 返回void类型,并且仅有一个实体参数类型。

 命名格式:前缀是Insert,Add,Create之一,后面跟着实体名。

 例如:

 public void InsertEmployee(Employee newEmployee) {...}

 在使用InsertAttribute属性的情况下,可以使用任何命名形式,例如:

 [Insert]

 public void YourFavoriteMethodName(Employee newEmployee) {...}

 2. 更新操作

 返回void类型,并且仅有一个实体参数类型。

 命名格式:前缀是Update,Change,Modify之一,后面跟着实体名。

 例如:

 public void UpdateEmployee(Employee hangedEmployee) {...}

 在使用UpdateAttribute属性的情况下,可以使用任何命名形式,例如:

 [Update]

 public void YourFavoriteMethodName(Employee changedEmployee)

 3. 删除操作

 返回void类型,并且仅有一个实体参数类型。

 命名格式:前缀是Delete,Remove之一,后面跟着实体名。例如:

 public void DeleteEmployee(Employee currentEmployee)

 在使用DeleteAttribute属性的情况下,可以使用任何命名形式,例如:

 [Delete]

 public void YourFavoriteMethodName(Employee currentEmployee)

 4. 查询操作

 可以是返回IEnumerable<T>,IQueryable<T>或T类型的任何方法。这里T是实体类型。例如:

 public IQueryable<Employee> GetEmployee() {...}

 //也可以返回一个实体类型而不是IQueryable/IEnumerable类型

 public City GetCity() {...}

 此外,我们还可以使用QueryAttribute属性显式地指定一个方法为查询操作,例如:

 [Query]

 public IQueryable<Employee> GetEmployee() {...}

 5. 关于自定义操作

 返回void类型,使用实体类型作为方法的第一个参数,并且方法命名没有遵循前面几种CRUD操作对应的约定,这样的方便将被识别为自定义方法,例如:

 public void ApproveEmployee(Employee changedEmployee, ...)

 此外,我们还可以使用CustomAttribute:属性显式地指定一个方法为自定义操作,例如:

 [Custom]

 public void ApproveEmployee(Employee changedEmployee, ...)

0
相关文章