将DataSet与数据库中的数据同步的最佳方法是什么?以下是参数:
我已经查看了DataSet的Merge功能,但这似乎没有保留“ID”列的概念。我看过DiffGram功能,但这里的问题似乎是由同一DataSet中的更改生成的,而不是某些外部数据源上发生的更改。
我已经从这个解决方案运行了一段时间,但我知道的方法可行(有很多不足之处)是构建一个单独的DataSet,然后迭代所有行,逐字段地应用更改到DataSet上它受约束。
有没有人有类似的情况?你是怎么解决这个问题的?即使您没有遇到类似的问题,也欢迎任何解决方案的建议。
由于
答案 0 :(得分:1)
DataSet.Merge适用于此,如果您为每个DataTable定义了主键; DataSet会将更改的事件引发到任何数据绑定GUI控件
如果您的表很小,您可以重新读取所有行并定期合并,否则限制使用时间戳读取集合是一个好主意 - 只需告诉DBA遵循规则并更新时间戳; - )
另一个选项 - 这是一项工作 - 是使用触发器或存储过程保留更改的行队列(时间戳,行ID),并将刷新查询基于队列中的时间戳;如果基表中有很多行,这将更有效率,允许您(通过队列记录上的内部联接)仅提取自上次轮询时间以来更改的行。
答案 1 :(得分:0)
我认为存储用户已扩展的节点列表会更容易(假设您可以唯一标识每个节点),然后重新加载数据并将其重新绑定到树视图,然后展开之前扩展的所有节点。