Существующее приложение Windows Universal добавляет новые столбцы в таблицу SQLite. - PullRequest
0 голосов
/ 13 октября 2018

У нас есть универсальное приложение для Windows 8.1, опубликованное в магазине Windows.Из-за изменения требований теперь нам нужно добавить некоторые поля в существующую таблицу.Мы использовали SQLite для Windows Runtime (Windows 8.1) и SQLite для Windows Phone 8.1.Теперь, если мы добавим несколько новых полей в существующую таблицу (путем обновления классов модели), это вызовет какие-либо проблемы, когда существующие пользователи обновят приложение?

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

1 Ответ

0 голосов
/ 13 октября 2018

Добавление нового столбца в существующую таблицу совершенно безопасно даже с существующей базой данных SQLite.То же самое касается создания новой таблицы.Конкретный процесс зависит от того, какую библиотеку SQLite вы используете.

Если вы запрашиваете базу данных напрямую, используя SQL-запросы, то вы будете использовать ALTER TABLE ... ADD COLUMN запрос.Если вы используете библиотеку, такую ​​как sqlite-net-pcl, вы получаете автоматические миграции из коробки при запуске метода CreateTable.Как указано в документации :

В настоящее время автоматическая миграция поддерживает только добавление новых столбцов.Если у ваших классов есть новые свойства, которые не связаны со столбцами в таблице, то команды alter table ... add column будут выполняться для обновления базы данных.Эти новые столбцы не будут иметь значений по умолчанию и, следовательно, будут нулевыми.

Совет

При изменении модели всегда проверяйте изменения по сравнению с предыдущей версией базы данных.Это можно сделать двумя способами:

  • Установите существующую версию из Store, запустите приложение и используйте его, чтобы оно содержало некоторые данные, затем закройте его и перейдите к C:\Users\[UserName]\AppData\Local\Packages.Здесь перейдите к Packages и там найдите папку пакета вашего приложения.Внутри перейдите на LocalState, где вы должны найти базу данных sqlite.Скопируйте его куда-нибудь, удалите версию Store и запустите новую версию для отладки и поместите точку останова в конструктор App.xaml.cs.Когда отладчик останавливается на этом, скопируйте исходную базу данных обратно в ту же папку в папке пакета приложения LocalState и продолжайте отладку.Обратите внимание, что база данных перенесена правильно.
  • Используя систему контроля версий Git, перейдите в историю к предыдущей фиксации выпуска, установите приложение для отладки, заполните базу данных некоторыми данными, закройте приложение.Теперь перейдите к последнему коммиту и снова запустите приложение для отладки.Убедитесь, что миграция работает.
...