Отношения внешнего ключа теряются при синхронизации с использованием MS Sync Framework - PullRequest
2 голосов
/ 14 октября 2011

Я видел несколько сообщений на этом и других сайтах, в которых говорится, что проблема обычно связана с порядком добавления таблиц в конфигурацию SyncAgent на стороне клиента или SyncAdapter на стороне поставщика.,Я полагаю, что у меня правильное упорядочение таблиц в обоих этих местах (у меня N-уровневая архитектура - веб-служба, предоставляющая функции синхронизации).

Кто-нибудь знает о любой другой потенциальной причине для такого поведения?

Также: Sycning работает для всех таблиц, кроме одной.По какой-то причине эта таблица создается на клиенте, но никакие записи не передаются ... даже при первоначальной синхронизации, когда база данных создается на клиенте.Любые идеи?

Любая помощь будет принята с благодарностью.(заставить эту функциональность синхронизации работать, а затем объекты данных для использования клиентом на основе синхронизированных данных превращаются в жизненную миссию. Разве вам не нравится работать с (массивными) Frameworks?)

Большое спасибо за все, что вы можете предложить.

[ОБНОВЛЕНИЕ: я обнаружил проблему, из-за которой записи для одной таблицы были исключены из синхронизации, а записи из всех других таблиц были синхронизированы.Столбец InsertId для рассматриваемой таблицы был полон значений NULL, и данные UniqueIdentifier нельзя сравнивать с NULL.В других таблицах нет столбца InsertId, поскольку они предназначены только для загрузки.Тем не менее, основная проблема отсутствия отношений между внешними ключами сохраняется]

Ответы [ 3 ]

3 голосов
/ 14 октября 2011

ОК, я нашел этот оператор:

По умолчанию на клиент не копируются следующие ограничения: ограничения FOREIGN KEY, ограничения UNIQUE и ограничения DEFAULT

в этом документе: http://msdn.microsoft.com/en-us/library/bb726037.aspx

Итак, похоже, мне нужно «вручную» создать отношения, как только схема будет создана на клиенте.

0 голосов
/ 27 января 2014

В моем ответе объясняется один из способов обхода отношений внешних ключей. Sync Framework 2.1. Ограничения внешних ключей

0 голосов
/ 26 октября 2011

крайне важно , чтобы добавить адаптеры к поставщику на стороне сервера в правильном порядке.Вам также необходимо убедиться, что вы избегаете всех циклических ссылок на несколько таблиц, или вам нужно написать некоторую сложную логику многопроходной синхронизации, чтобы синхронизировать сначала таблицы без внешних ключей, а затем внешние ключи после факта.Возможно, круговая ссылка - вот почему вы теряете только одну таблицу.Хорошее обсуждение проблемы здесь http://www.8bit.rs/blog/2009/12/replicating-self-referencing-tables-and-circular-foreign-keys-with-microsoft-sync-framework/.

Когда я работал над этой же проблемой в прошлом месяце, я обнаружил, что используя INFORMATION_SCHEMA, вы можете написать довольно хорошую хранимую процедуру для динамического определения иерархии отношенийдля использования при настройке универсального поставщика синхронизации.Дайте мне знать, если вас интересует что-то подобное ...

...