微软同步框架(MSF)入门之二--增量和修改同步方式
在上一篇文章当中,我通过创建一个SnapShot(快照方式)DEMO演示MSF是如何将远程数据服务器中的数据同步到本地 SQLCE数据库中的。今天这篇文章演示如何使用同步操作向导创建另外一种方式,即“只同步新更改和增量更改”方式。当前这种方式比之前一种"快照方式"要更加便捷,而且因为快照方式是采用整表同步,因此不管是数据是否被修改过,都是把所有数据下载到本地,而今天演示的这种方式是只同步修改或新添加的数据,可以说是一种经济实惠的解决方案。 当然,这里并不是说“快照”方式不好,当数据表中的记录频繁变化的话(不稳定)且表中记录少时,这种方式也是一种不错的方案。另外为了“只同步新更改和增量更改”方式,MSF要在远程数据服务器上的相应表格中添加相应的字段用于记录数据的修改和添加情况,并且还会新建一个表用于记录当前表中的记录删除情况(下面会在向导界面中有所体现),而这些都会带来额外的存储开销,所以我个人认为,当数据表中的记录值变化较小(相对稳定)且表中记录量大时,这种方案会是一个不错的选择。 好了,开始正文吧。 首先要说明的是,如果您看过我的上一篇关于MSF的文章的话,相信您对同步设置向导的整个流程会有个大体上的了解。今天的这种“只同步新更改和增量更改”只是在其“配置供脱机使用的表” 窗口中进行如下设置(之前流程设置参见上文即可): 下面解释一下截图中的一些设置,在服务器配置一栏,我们看到有几个下拉列表选项: “使用下列项比较更新”后面的LastEditDate是我们一会要在远程服务器的dnt_posts1表中建立的一个字段,该字段是日期型,用于记录当前数据行的最后一次修改变时间。 “使用下列项比较插入”后而的CreationDate是该行数据的插入时间。 “将已删除的项移至”后面的dnt_posts_tombstone是当删除该表中的某一行数据时,将该行数据的主键(MSFADO框架向导要求每个表必须有一个主键,当前表主题为pid). "使用下列项比较删除"后面的DetetionDate是在dnt_posts_tombstone表中的一列(字段),用于记录当前dnt_posts1表中的记录(主键)删除的时间。 通过上面的设置,系统就会拥有了关于进行数据记录CUD(创建,修改,删除)的时间戳,据此来作为进行数据同步时的依据。 当完成了“配置数据同步”窗口中的设置之后。如下图: 这样当我们单击确定时,系统会提示我们如下内容(配置与上一篇文章中SnapShot设置不同): 当我们再次点击确定时,系统开始将本地数据库(本DEMO为BiDirectSynce#2.sdf)与远程数据库进行同步,如下: 然后接下来的操作与之前的SnapShot方式一样,也是对要同步的数据表做进一步的设置(使用表中的哪些字段等)。然后输入DataSet名称并点击“完成”按钮即完成了向导设置工作。 接下来就是在相应的WinForm中显示同步的数据了,在这里我偷了个懒,只是将前文中的窗体“复制” 了一份,重命名为BiDirectForm。当前同步的代码与前文也是一样的。这里就不多做介绍了。下面继续们的内容。 因为设计器完成时给我们生成的代码都是从服务器端向本地同步数据的。而如果本地数据编辑修改之后,要如何同步(上传)到远程服务器上面呢。其实, MSF在这方面封装的非常好,我们只要通过下面的代码即可以完成将本地的数据同步到远程,如下: //首先是将修改的数据先保存到本地SDF数据文件中 SnapDatasView.EndEdit(); //下面更新方法"Update"被重载5次,分别提供了datarow,datarow[],dataset,object[]等类型参数 this.dnt_post1TableAdapter.Update(this.biDirectSynceDataSet.dn |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |