none
RiaService的update是如何使用的? RRS feed

  • 问题

  • 建完一个Silverlight+riaservice项目之后,在web端的domainservice类只会产生如下代码:
     public void UpdateAbsentRecord(AbsentRecord currentAbsentRecord)
            {
                this.Context.AttachAsModified(currentAbsentRecord, this.ChangeSet.GetOriginal(currentAbsentRecord));
            }

    类似于这种的类的修改方法,不知在客户端是如何调用到的,怎么也试不出如何使用,请大家帮帮忙!
    因为不是用DataGrid直接进行修改,我是从数据库拿到一个类,对类修改后,
    HRMSDomainContext domainContext = new HRMSDomainContext();
       domainContext.SubmitChanges();
    无法修改到数据库。



       ((IEditableObject)newEmployee).BeginEdit();
        newEmployee.Age = 60;

        ((IEditableObject)newEmployee).EndEdit();
                  
                              
                    domainContext.SubmitChanges();

    也是一样,只能改到类的数据,无法保存到数据库。

    现在只是用了
     domainContext.Employees.Add(theEmployee);
     domainContext.Employees.Remove(theEmployee);
    对表进行增加和删除,对于[update]属性的定义还不会使用,riaoverview中也没提到

    本人是新手,请大家不吝赐教。谢谢大家了。

    2010年2月8日 13:46

全部回复

  • 如果你要修改就需要先拿到server端的数据,所以你要先用Load方法得到数据,然后对得到的数据进行修改,RiaService会自动跟踪你做了哪些修改,然后再使用 SubmitChanges()提交修改到Server端.

    2010年2月8日 23:53
  • load 方法好像不能返回单个数据。那我怎么才能修改到我的数据?
    我不是用控件的,所以除了load方法还有没有其他方法可以使用?
    2010年2月18日 13:13
  • 你好,
      
          Silverlight是纯客户端的技术,RIA技术起了一个桥梁作用。
     
          如果你一条一条从数据库取到客户端再去修改然后返回数据库的话,性能的牺牲相对较大。 
     
          所以,使用Load将数据全部取到客户端进行操作,在用户操作完成后submit再一次性写入数据库。 
        
          用DomainContext的话必须Load,当然你也可以自己写方法参数为Query条件,然后一条条的取得满足要求的数据再进行修改。 但是都要用到Load方法。
     
         这里说一下普通情况下Load以后,context里就有相应的EntitySet以供使用。 
      
         你可以通过context.EntitySetName.Select((r)=>(r.ID==1)); 这样类似方式来取得数据。
     
         (上边那句代码需要引入System.Linq)

    2010年2月22日 6:18