在该结构中,数据的更新是通过把delta数据传递到中间层的接口来实现的(并未通过DataProvider)
这样做的一个好处是方便客户端对数据库事务进行控制!如客户端需要同时将五个数据集的数据更新到数据库,且该更新必须在一个事务内完成,在这种情况下,如果通过DataProvider方式进行更新,很难达到目的!
事务控制的问题是解决了,但新的问题又出现了!
在数据库表的ID字段中,一般都是采用自增字段,
而数据在插入后,生成的自增字段必须通过delta返回到客户端
并与data数据进行合并
以便客户端反应出最近的数据,
且在合并的时候需要准确对应数据记录,比如我一次性插入了十条记录,也通过delta返回了十个ID,怎么才能将这十个ID准确的合并到这十条记录中呢?
如果不进行合并,则会出现在数据集中新增了数据,并成功保存后,该新增的数据无法进行删除,因为该数据ID未回到客户端,客户端不知道怎么去删除该数据!
现求解决此问题的最好办法?
我现在的初步想法是在clientdataset中新增一个自增字段列,我们暂且叫它顺序列,该列数据并不保存到数据库中,只是作为更新记录的先后顺序,在更新时,将该字段包含在delta中一并传递到中间层,数据库更新完成后,该顺序列就对应了数据插入过程中的自增字段值,当该delta返回到客户端时,再根据该顺序字列去更新data中的数据,这样虽然能够达到要求,但操作难度比较大,望高手能够指点一二!
3 个解决方案
#1
已解决:通过 DataSet.Reconcile(o);
#2
来迟了,
只有接分了
只有接分了
#3
接一点
#1
已解决:通过 DataSet.Reconcile(o);
#2
来迟了,
只有接分了
只有接分了
#3
接一点