技术开发 频道

Silverlight 3 RIA服务编程中异步域操作

   下面的代码展示了如何指定一个加载回调函数:

object state =……//用户状态
LoadOperation
<Employee> lo = _ctxt.Load(query,
EmployeesLoadedCallback, state);
……
private void EmployeesLoadedCallback(LoadOperation<Employee> lo)
{
if (!lo.HasError)
{
object state = lo.UserState;
foreach (Employee employee in lo.Entities)
{
//处理已加载的实例
}
}
else
{
//处理错误
}
}
要指定一个完成事件处理器,可以像下面这样使用LoadOperation.Completed。
object state =……//用户状态
LoadOperation
<Employee> lo = _ctxt.Load(query, null, state);
lo.Completed
+= this.OnEmployeesLoaded;
……
private void OnEmployeesLoaded(object sender, EventArgs e)
{
LoadOperation
<Employee> lo = (LoadOperation<Employee>)sender;
……
}

   当有许多方面(可能是外面的)对当前操作进度感兴趣时,那么上面的事件处理器创建是非常有用的。

4.SubmitOperation操作

   DomainContext.SubmitChanges方法将返回一个SubmitOperation的实例。其中,SubmitOperation代表了正在进行的异步提交操作;此外,DomainContext.SubmitChanges方法还提供了下面额外的状态及功能支持:

•ChangeSet—正在提交的EntityChangeSet
•EntitiesInError—对于一个产生校验或冲突错误的提交操作来说,它代表了产生错误的实体的集合。
另外,回调函数及Completed事件的提交与前面解释的LoadOperation中的使用方式一致,在此不再赘述。

5.InvokeOperation操作

    当调用一个ServiceOperation(服务操作)时,将返回一个强类型的InvokeOperation<T>。这里,T是ServiceOperation操作的返回类型。归纳来看,InvokeOperation操作提供了下面额外的状态及功能支持:
•OperationName—要调用的操作的名字
•Parameters—要操作的名字/值形式的字典参数
•ValidationErrors—当调用失败时对应的检验错误信息的集合
 •Value—ServiceOperation返回的值

   另外,回调函数及Completed事件的提交与前面解释的LoadOperation中的使用方式一致,在此不再赘述。

6.小结

   本文简要地总结了RIA服务开发中DomainContext支持的3种类型的重要的域操作:Query,Submit和Invoke。其中的每一种操作都有一个相应的操作类型用于描述正在进行中的异步操作。我们对这些RIA服务操作使用参数、注意事项及使用场景等进行了归纳,并给出片断代码例证。
 

0
相关文章