【问题标题】:Foreign key relationships are lost during syncing using MS Sync Framework使用 MS Sync Framework 同步期间外键关系丢失
【发布时间】:2011-10-14 13:41:22
【问题描述】:

我在这个站点和其他站点上看到了一些帖子,指出问题通常是由将表添加到客户端的 SyncAgent 或提供程序端的 SyncAdapter 的配置中的顺序引起的.我相信我在这两个地方都正确地对表格进行了排序(我有一个 N 层架构 - 一个提供同步功能的 Web 服务)。

有没有人知道导致这种行为的任何其他潜在原因?

另外:同步适用于所有表,除了一个。出于某种原因,该表是在客户端上创建的,但没有传输任何记录……即使在初始同步时,当在客户端上创建数据库时也是如此。有什么想法吗?

任何帮助将不胜感激。 (让这个同步功能工作,然后基于同步数据的数据实体供客户端使用,正在变成一项生活任务。你不只是喜欢使用(大量)框架吗?)

非常感谢您提出的任何建议。

[更新:我发现了导致一个表的记录从同步中省略的问题,而所有其他表的记录都已同步。相关表的 InsertId 列充满了 NULL 值,并且 UniqueIdentifier 数据无法与 NULL 进行比较。其他表没有 InsertId 列,因为它们仅供下载。尽管如此,没有外键关系的主要问题仍然存在]

【问题讨论】:

    标签: microsoft-sync-framework


    【解决方案1】:

    好的,我找到了这个说法:

    默认情况下,以下约束不会复制到客户端:FOREIGN KEY 约束、UNIQUE 约束和 DEFAULT 约束

    在本文档中:http://msdn.microsoft.com/en-us/library/bb726037.aspx

    因此,一旦在客户端上创建了架构,我似乎必须“手动”创建关系。

    【讨论】:

      【解决方案2】:

      以正确的顺序将适配器添加到服务器端提供程序是至关重要的。您还需要确保避免所有多表循环引用,否则您将需要编写一些复杂的多通道同步逻辑来先同步没有外键的表,然后再同步外键。也许循环引用是您只丢失一张表的原因。在这里http://www.8bit.rs/blog/2009/12/replicating-self-referencing-tables-and-circular-foreign-keys-with-microsoft-sync-framework/很好地讨论了这个问题。

      当我上个月处理同样的问题时,我发现使用 INFORMATION_SCHEMA,您可以编写一个非常好的存储过程来动态确定用于设置通用同步提供程序的关系层次结构。如果你对这样的事情感兴趣,请告诉我...

      【讨论】:

        【解决方案3】:

        我在Sync Framework 2.1 Foreign key constraints的回答中解释了同步外键关系的一种解决方法

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多