Microsoft Sync Framework 2.1 с синхронизацией сервера отслеживания изменений и клиентской базы данных на C #

Я новичок в asp.net с синхронизацией базы данных. В настоящее время я реализую проект, который требует двунаправленной синхронизации базы данных Server (SQL Server 2010) ‹> C # Client (SQLite) с использованием отслеживания изменений. Я просмотрел большую часть учебника / примера, обсуждаемого на форумах и в Stack Overflow:

http://dotnetvisio.blogspot.com/2013/07/microsoft-change-tracking-sql-server.html

Синхронизация баз данных SQL Server 2008 через HTTP с использованием WCF и Sync Framework

http://msdn.microsoft.com/en-us/library/cc305322.aspx

http://technet.microsoft.com/en-us/library/cc280358(v=sql.105).aspx и т. д. ...

Однако Я не мог понять, как реализовать синхронизацию базы данных отслеживания изменений между:

[База данных SQL-сервера с включенным отслеживанием изменений] ‹> [Служба WCF]‹> [Клиент WPF] ‹> [Локальная база данных SQLite]

Итак, мой вопрос: как подключиться и установить соединение для синхронизации с локальной базой данных? Мы очень ценим пошаговое руководство. Спасибо.


person BlackHat    schedule 22.01.2014    source источник
comment
Чтобы было ясно, вы подключаете две базы данных вместе напрямую с помощью Sync Framework, а не через стороннюю организацию, верно? Ваша `` диаграммная '' модель меня зацикливает   -  person JNYRanger    schedule 22.01.2014
comment
Да, база данных будет подключена через структуру синхронизации. Извините за запутанность.   -  person BlackHat    schedule 22.01.2014
comment
Нет проблем, посмотрите мой ответ. Просто использовал это для проекта несколько месяцев назад в качестве моего первого опыта работы с Sync Framework. Его гораздо проще использовать, чем говорится в некоторых из этих статей.   -  person JNYRanger    schedule 22.01.2014
comment
Если вы используете SQL Server Compact на клиенте, реализовать его почти тривиально, но если вам необходимо использовать SQLite, вы испытаете боль. Вы захотите перехватить все вызовы БД для отслеживания метаданных знаний.   -  person Timothy Walters    schedule 24.01.2014
comment
Я нашел статью, в которой рассказывается о том, как реализовать это в SQLite (подсказка: вручную отслеживать грязные и надгробные записи, чтобы сообщить о них серверу): jtabadero.wordpress.com/2013/01/09/   -  person Timothy Walters    schedule 24.01.2014
comment
@TimothyWalters Спасибо за вашу информацию. Однако, как указано, подготовка базы данных запрещена при разработке этого проекта. И да, мне нужно, чтобы это было сделано с использованием SQLite в качестве клиентской базы данных.   -  person BlackHat    schedule 27.01.2014


Ответы (1)


Предполагая, что вы используете Sync Framework для прямой синхронизации двух баз данных, вам не нужно вручную реализовывать компоненты отслеживания изменений в большинстве ситуаций с SQL Server и / или SQL Server Compact. Самый простой способ сделать это - написать вспомогательное приложение, которое будет обрабатывать область видимости и подготовку баз данных за вас. Это заставит Sync Framework автоматически создавать все объекты отслеживания изменений (Tables / Functions / StoredProcs), необходимые для правильной работы Sync Framework. Ознакомьтесь с этой статьей в MSDN: Пошаговое руководство: определение объема и инициализации

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

http://www.8bit.rs/blog/2009/05/debugging-sql-express-client-sync-provider/

Ответ MS о том, что отслеживание изменений и платформа синхронизации несовместимы напрямую

Sync Framework Metadata Services - это информация о том, что вам нужно создавайте своих собственных провайдеров

person JNYRanger    schedule 22.01.2014
comment
Я уже прошел через ваш учебник ранее. Однако не забудьте упомянуть, что данная норма запрещена для развития этого проекта. Разрешено только отслеживание изменений. - person BlackHat; 22.01.2014
comment
Что ж, теперь это немного меняет ситуацию! Вы можете использовать встроенное отслеживание изменений, но вам нужно написать своих собственных поставщиков знаний. Постой, у меня есть статья об этом. - person JNYRanger; 22.01.2014
comment
Спасибо за Вашу информацию. Я понимаю, что это непростая задача для меня, и поэтому я здесь и прошу помощи. :) - person BlackHat; 22.01.2014