MS Sync Framework и SQL Server Compact

Я разрабатываю приложение Windows C #, которое может работать в режиме онлайн и в автономном режиме.
В режиме Online он подключается к SQL Server. В автономном режиме он подключается к локальной базе данных.

Я использую Microsoft Sync Framework 2.1 для синхронизации двух баз данных по требованию.

До сих пор я использовал экземпляр LocalDB SQL Server в качестве локальной базы данных. Но больно настраивать систему автоматически во время процесса установки моего приложения. Поэтому мне сложно использовать SQL Server Compact 3.5 или 4.0, который очень легко распространять (входит в один файл).

Но я не могу заставить его даже скомпилировать код инициализации Compact DB:

DbSyncScopeDescription scopeDesc = new DbSyncScopeDescription("MyScope"); SqlCeConnection clientConn = new SqlCeConnection(OfflineConnectionString); var clientProvision = new SqlCeSyncScopeProvisioning(clientConn, scopeDesc); clientProvision.Apply(); 

которые я использовал раньше (без классов Ce ), но SqlCeSyncScopeProvisioning не может быть разрешен.

Здесь что-то ужасно.
Как я могу синхронизировать мой CompactDB, чтобы распространять это как мою локальную базу данных?

Сначала убедитесь, что вы успешно установили sdk ?

После этого убедитесь, что вы добавили следующие ссылки:

  • Microsoft.Synchronization.Data.dll,

  • Microsoft.Synchronization.Data.Server.dll

  • Microsoft.Synchronization.Data.SqlServer.dll
  • Microsoft.Synchronization.Data.SqlServerCe.dll

Также в моем случае он работал с добавлением

  • System.Data.SqlServerCe – 4.0

РЕДАКТИРОВАТЬ

Против вашего комментария, это работает, только если вы используете SQL Server CE 4.

Я пробовал это сейчас с SQL Server CE 3.5, и действительно, я мог бы воспроизвести вашу проблему.

Исправлено переключение на SQL Server CE 4.0.

ExampleTable 4.0

Таблица

TestCode

  var scopeDesc = new DbSyncScopeDescription("MyScope"); var tbl = new DbSyncTableDescription("TestTable"); var pkColumn = new DbSyncColumnDescription("Id", "int"); pkColumn.IsPrimaryKey = true; tbl.Columns.Add(pkColumn); tbl.Columns.Add(new DbSyncColumnDescription("Name", "nvarchar(254)")); scopeDesc.Tables.Add(tbl); var clientConn = new SqlCeConnection(@"Data Source=test.sdf;Persist Security Info=False;"); var clientProvision = new SqlCeSyncScopeProvisioning(clientConn, scopeDesc); clientProvision.Apply(); 

результат

Все прекрасно компилируется. После выполнения вышеуказанных шагов вы сможете легко перенести свой код на SQL Server CE

Interesting Posts

Пользовательская проверка, если текстовое поле пуст, но данные все еще записываются в базу данных

Олицетворение Windows Identity не сохраняется в надежном подключении Sql

Пользовательское решение для поиска приложений .NET

Последний день последнего месяца в SQL Server

требуется, чтобы внешний ключ был не нулевым

SQL Server Reverse Running Total

Как отменить функцию OPENJSON () на SQL-сервере?

Распределение загрузки SQL Server

Использование рекурсивного CTE для решения группы, а не иерархии

Обновление данных с одинаковым идентификатором, но разными данными в строке

Использование PATINDEX для поиска различных шаблонов длины в T-SQL

Отдельный сервер приложений и сервер баз данных

Хранимая процедура SQL Server вызывает множественные ошибки

Как избежать динамического SQL при использовании неопределенного количества параметров?

Сгенерировать обновление SQL для изменения порядка элемента?

Давайте будем гением компьютера.