三层结构中,对客户端的多次操作自动记录在delta中,
提交事务时我只传递delta数据,我想最好能把delta数据包直接赋给数据集提供者,
不知可否?如果实在不行的话,怎样把delta中的数据转换成相应的可以执行的commandtxt和sql字符串?

解决方案 »

  1.   

    不知楼主仔细看过 midas 的相关东东没?????  midas 在数据更新的时候,传递的就是 delta 数据。 到后来就是调用了 DataSetProvider 的 ApplyUpdates 方法。该方法的第一个参数就是 Delta!
      

  2.   

    我们的三层结构用的是webService类似midas,问题是我的客户端数据集没跟数据集提供者直接相连。所以不能在客户端数据集调用ApplyUpdate,而是把客户端修改的delta数据,传到应用服务器处理后,写回数据库中。是不是我的这种设计本身就不合理,而应该在客户端指定数据集提供者,这样就可以直接应用ApplyUpdate方法了?
      

  3.   

    Borland 没有提供 这种功能,Borland也不会在发展midas技术,以后也不会提供
      

  4.   

    provider的处理过程是这样的.
    取数据
      provider通过dataset控件从数据库中获取数据,并将之打包成data传递给客户端.
    更新数据
      客户端将delta数据通过dcom(sock)传递给服务器的provider,然后provider分析delta并对照dataset控件中字段的定义信息,动态的产生sql语句,更新数据库.根据这个思路,如果你需要使用delta通过provider更新,那么你在服务器需要定义dataset以及dataset中字段的信息(主要是providerflag). 在客户端,你需要设置clientdataset的providername同服务器端的provider关联起来.
      

  5.   

    >>>>问题是我的客户端数据集没跟数据集提供者直接相连。的确 没必要非把 CDS 和 DSP 绑定在一起。>>>>所以不能在客户端数据集调用ApplyUpdate,而是把客户端修改的delta数据,传到应用服务器处理后,写回数据库中。CDS 的 ApplyUpdate 方法 其实就是通过 IAppServer 接口的 AS_ApplyUpdates 方法来更新数据的。它就是把客户端的 Delta 传到 Server 后交给 DSP 处理滴。