0

好吧,我正在探索 Sync Framework 2.1。它工作得很好,直到我改变了一个表并添加了一个列。有很多关于这个主题的文章。这是我的方法

  1. 更改表并在数据库中添加一列(主,从)
  2. 重命名跟踪表(例如,从 todos_tracking 到 todos_tracking_back)
  3. 删除原来的提供范围
  4. 创建一个与前者同名的新范围,跳过创建跟踪表
  5. 将跟踪表重命名为原始名称(例如,从 todos_tracking_back 到 todos_tracking)

所有这一切只是为了不丢失变化的轨迹。特别适用于大型数据表。

结果如何?当我更新现有行或删除它时,更改不会反映在同步中。但是,当我插入新行时,会反映更改。

有人有这种事情的经验吗?

在我的工作中,有时我们需要更改表以添加新列。现在我们需要同步数据库。

希望清楚。提前致谢。

4

1 回答 1

0

在第 3 步中,当您删除范围时,您实际上删除了同步内容的同步知识。您可能只是取消配置和重新配置。

跟踪表只存储更改的内容,不存储同步的内容。那在范围表的知识列中。

由于您删除了范围同步知识,因此 sync fx 无法判断两个数据库中的表是否包含相似的数据。然后它会尝试将现有行从一个数据库应用到另一个数据库,您很可能会遇到冲突。

尝试订阅 ApplyChangesFailed 事件,您应该会看到冲突触发。

新插入将起作用,因为这些是以前不存在的行。

于 2012-09-06T03:47:15.997 回答