Обновление базы данных - QualitySolution/QSProjects GitHub Wiki

Общее описание

Библиотека QS.Updater реализует механизм обновления базы данных. После обновления версии программы при входе пользователя программа может проверить необходимость обновления базы данных.

Полноценное обновление - Выполняется при переходе на следующую значительную версию продукта, то есть при изменении первых двух цифр версии. Например 2.2 -> 2.3. Номер версии базы данных хранится в таблице base_parameters в параметре version. Если версия базы не соответствует текущей версии программы, осуществляется обновление базы до актуального релиза.

Настройка обновления

configuration.AddUpdate (
	new Version (1, 0),
	new Version (1, 1),
	"workwear.Updates.1.1.sql");

Настройка Autofac

Для работы обновления БД нужно подключить модуль UpdaterDBAutofacModule. Типичная регистрация:

builder.RegisterType<ApplicationVersionInfo>().As<IApplicationInfo>();
builder.RegisterType<ParametersService>().AsSelf();
builder.RegisterModule(new UpdaterDBAutofacModule());
builder.Register(c => MainClass.MakeUpdateConfiguration()).AsSelf();

Обратите внимание

  • Для корректной работы скриптов !!!НИКОГДА!!! не указывай в скрипте название схемы(базы).
  • Не забудь добавить скрипт как встроенный ресурс к проекту.

О синтаксисе методов

На текущий момент метод для регистрации обновлений — только один:

configuration.AddUpdate(Version source, Version destination, string scriptResource, Action<DbConnection> executeBefore = null, bool onTesting = false)
  • source — версия, с которой происходит переход;
  • destination — версия, на которую происходит переход;
  • scriptResource — встроенный ресурс SQL-скрипта;
  • executeBefore (опционально) — программное действие перед выполнением скрипта;
  • onTesting (опционально) — если true, скрипт не используется при обновлении приложения, только доступен в тестах.