Заставить OCA со службой синхронизации использовать имя динамической таблицы

Я работаю с приложением OCA на базе базы данных SQL-сервера и клиентской базы данных SQL CE. У каждого пользователя есть собственная таблица в базе данных SQL-сервера. Таблица каждого пользователя имеет одинаковую схему, но может содержать разные данные. Я хотел бы, чтобы имя synctable динамически устанавливалось в клиентском приложении на основе имени таблицы базы данных SQL-сервера (которое установлено как userID + "__usersdatatable").

Служба синхронизации работает без проблем, когда я ничего не пытаюсь изменить. Моя последняя идея состояла в том, чтобы изменить SyncTable.TableName = "jsmith_usersdatatable"; в LocalDataCache1SyncAgent.cs в методе oninitialized(). Однако я получаю следующую ошибку:

"Невозможно инициализировать клиентскую базу данных, поскольку схему для таблицы "zlentz_GOBOS" не удалось получить с помощью метода GetSchema() DbServerSyncProvider. Убедитесь, что вы можете установить соединение с клиентской базой данных и что либо свойство SelectIncrementalInsertsCommand, либо SelectIncrementalUpdatesCommand свойство SyncAdapter указано правильно».

Короче говоря, идея состоит в том, что каждый OCA должен синхронизироваться с другой таблицей (двунаправленной). Я, очевидно, не эксперт по SQL или службам синхронизации, поэтому совет будет полезен. :) Заранее спасибо!


person Aaron Lentz    schedule 13.05.2012    source источник
comment
что, если пользователь изменит свой идентификатор пользователя?   -  person Chris Bednarski    schedule 14.05.2012


Ответы (1)


Узнав больше о Sync Framework, стало очевидно, что мне нужно работать вне мастера.

Для будущих зрителей следующая ссылка была очень полезна:

http://www.codeproject.com/Articles/18027/Take-Data-Offline-Using-Microsoft-Synchronization

person Aaron Lentz    schedule 17.05.2012