Развертывание SQLite против SQLCE - PullRequest
0 голосов
/ 10 июля 2011

Я нахожусь в процессе написания автономного смарт-клиента, который будет иметь возможность синхронизации с основным бэкэндом, когда будет установлено соединение.В качестве примечания я рассмотрел Microsoft Sync Framework, но, поскольку я действительно иду в одну сторону, я не чувствовал, что это купит меня достаточно, чтобы оправдать его.

У меня есть вопрос, связанный с SQLiteпротив развертываний SQLCE и ClickOnce.Я имел дело с SQLite раньше (впечатляющий маленький инструмент), и я имел дело с ClickOnce, но никогда вместе.Если я установлю установщик для своего приложения через ClickOnce, как я могу гарантировать, что во время обновлений локальная база данных не будет уничтожена?Можно ли обновить базу данных (структуру таблиц и т. Д., Если необходимо) как часть программы установки?Или лучше использовать SQLCE для чего-то подобного?Я определенно не хочу идти по пути установки SQL Express или чего-либо еще, поскольку накладные расходы были бы слишком высокими для того, что я делаю.

Ответы [ 2 ]

1 голос
/ 11 июля 2011

Я не могу говорить о SQLLite, никогда не развертывая его, но у меня есть некоторая информация о SQLCE.

Во-первых, вам не нужно развертывать его как предварительное условие.Вы можете просто включить DLL в свой проект.Вы можете проверить эту статью , которая объясняет как.Это дает вам полный контроль над тем, какая версия используется, и вам не нужно заниматься ее установкой как таковой.

Во-вторых, я не рекомендую развертывать базу данных в виде файла данных и разрешатьClickOnce управлять этим.Когда вы измените этот файл, ClickOnce опубликует его снова и поместит в каталог данных.Затем он возьмет предыдущий и поместит его в подпапку \ pre, и если у вас нет кода для обработки этого, ваш пользователь потеряет свои данные.Поэтому, если вы откроете файл базы данных, чтобы посмотреть на структуру таблицы, вы можете быть неприятно удивлены, когда вам позвонят по телефону и узнают, что данные пропали.

Если вам нужно сохранить данные между обновлениями, я рекомендую переместить базу данных в папку [LocalApplicationData] при первом запуске приложения и сослаться на нее там.Затем, если вам необходимо выполнить какие-либо обновления в структуре, вы можете сделать это программно и контролировать, когда они происходят. Эта статья объясняет, как это сделать и почему.

Другое преимущество размещения данных в LocalApplicationData заключается в том, что если у пользователя возникла проблема и ему необходимо удалить и переустановить приложение, его данные сохраняются.

0 голосов
/ 10 июля 2011

Независимо от встроенной базы данных, выбранный вами файл базы данных (.sqlite или .sdf) будет частью вашего проекта, поэтому вы сможете использовать свойства этого файла "Build Action" и "Copy to Output Directory" дляконтролировать, что происходит с файлом во время установки / обновления.

Если вы выберете «Не копировать», он не будет копировать файл базы данных, а если вы выберете «Копировать, если новее», он будет копироваться только при наличииновая версия файла вашей базы данных.

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

...