Настройка приложения Windows — обновление и изменение схемы базы данных

У меня есть одно приложение для Windows, которое использует sqlite DB. Я создал настройку для этого приложения, используя проект установки и развертывания. Возможно, мне придется делать сборки раз в два месяца с изменениями в приложении, и пользователь должен обновлять его.

Мое приложение создает файл базы данных sqlite при первом запуске. Если файл БД есть, он его не создает. Теперь, когда у меня есть обновление для приложения, мне также придется внести некоторые изменения в схему БД. В этом случае у пользователя также могут быть некоторые данные в базе данных sqlite. Я не должен трогать данные, а обновлять схему БД. Также это будет происходить раз в несколько месяцев, так как я буду добавлять в приложение новые функции.

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

Какие-либо предложения?


person JPReddy    schedule 18.11.2010    source источник


Ответы (3)


Autopatchnet — этот проект представляет собой перенос AutoPatch на .Net, основанный на оригинальном проекте TactiKnowledge dotnet.

ecm7migrator — этот проект является ответвлением Migrator.NET.

Migrator.NET — миграция баз данных для .NET. Основан на идее миграции ActiveRecord Rails.

person AlexandrYZ    schedule 18.11.2010
comment
Ага; в значительной степени ответ - управление версиями/миграция базы данных (что вы должны делать для своего кода в любом случае, а не только для развертывания). - person strager; 18.11.2010

У вас должен быть номер версии БД в вашей базе данных, и ваше приложение должно обновлять базу данных в зависимости от номера версии. Таким образом, ваши сценарии обновления sql будут содержаться/вызываться вашим приложением и обрабатываться при запуске.

Программа установки обновит код и файлы, а ваше приложение обновит базу данных.

person Jla    schedule 18.11.2010
comment
База данных была реализована так, как вы сказали. Обновление приложения происходит по-другому. Я ответил на свой вопрос. - person JPReddy; 18.11.2010

Хотя приведенные выше ответы в определенной степени касаются моей проблемы, я придумал совершенно другой подход.

Я использовал подход обновления базы данных, предоставленный DrDro. Для обновления приложения, я думаю, у меня есть лучший подход. Я нашел одну статью, в которой говорится об автоматическом обновлении приложения из самого приложения всякий раз, когда в источнике (в моем случае на сервере) доступно новое обновление.

Вот статья (эта ссылка обновлена, так как предыдущая ссылка не работала). Он очень четко объясняет этот подход, и это было бычьем глазом для моего требования.

person JPReddy    schedule 18.11.2010
comment
@stigzler Это очень старый ответ, и, к сожалению, они его удалили. Обновил ответ ссылкой, аналогичной той, которую я использовал. - person JPReddy; 01.04.2019
comment
Спасибо, парень. Но тем временем я нашел гораздо лучшее решение для однофайловых баз данных в приложениях Windows под названием LiteDB. Он справляется со всеми обычными головными болями с ADO.net, Entity Framework и т. д. Он становится невероятно гибким, как только вы освоитесь с безболезненным обновлением схемы и данных и т. д. - person stigzler; 02.04.2019