Ведение базы данных на стороне клиента

#c# #visual-studio #sqlite #wix #wix3

#c# #visual-студия #sqlite #wix #wix3 #visual-studio

Вопрос:

Клиентская сторона: у меня есть настольное приложение. Приложение также имеет файл Sqlite. Я установил его с помощью набора инструментов WIX на клиентском компьютере. Когда я ввожу некоторые данные в приложение, они сохраняются в файле базы данных.

Серверная часть: я внес некоторые изменения в свое приложение, например, добавил дополнительный столбец в таблицу в файле базы данных.

Далее я установил новую версию приложения со стороны сервера .

ПРОБЛЕМА: как только я открываю свой файл sqlite со стороны клиента, все мои предыдущие данные теряются. Все, что я получаю, — это пустая таблица.

Вопрос: возможно ли сохранить предыдущие данные, хранящиеся в базе данных, вместе с новыми изменениями после установки обновленной версии приложения?

Ответ №1:

Это распространенная проблема с MSI, которая обычно выражается в файлах XML, но это то же самое.

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

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

Комментарии:

1. Да, я согласен. Мы постоянно повторяем этот совет. Поместить базу данных куда-нибудь в профиль пользователя? Мне больше нравятся сетевые ресурсы или реальное подключение к онлайн-базе данных (облаку). Все зависит от того, что вы можете использовать. Ваше приложение должно обновить схему базы данных при запуске.