Я использую EF.Core с миграциями с первым кодом для обновления базы данных SQL.
Каждый раз, когда я добавляю миграции (Консоль диспетчера пакетов: add-migration
), я обновляю базу данных с помощью хорошо -известная update-database
команда. Есть ли способ запустить пакетный сценарий SQL после автоматического завершения этой команды (как вы можете сделать с событиями после сборки в Visual Studio)?
Этот сценарий может создавать резервные копии базы данных или выполнять другие задачи ( например, установка ролей пользователей и т. д. c).
Я не хочу изменять существующие миграции для этого, я знаю, что вы можете добавить что-то вроде
protected override void Up(MigrationBuilder migrationBuilder)
{
var sqlFile = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
@"Migrations\20200701103006_MySQLBatch_Up.sql");
var sqlCommands = System.IO.File.ReadAllText(sqlFile);
migrationBuilder.Sql(sqlCommands);
// ...
}
Но я не Я не хочу этого делать, потому что таким образом вам придется делать это каждый раз, когда вы добавляете новую миграцию.
Есть ли событие или метод, которые можно переопределить для достижения Это? Или что-то, что может быть запущено, например скрипт?
Фактически, я хочу добиться, чтобы скрипт или метод вызывали:
update-database
pg_dump -h localhost -U postgres -p 5432 myDatabase > C:\Temp\myDatabase.sql
Примечание: update-database запускается в контексте диспетчера пакетов, pg_dump запускается в командной оболочке (cmd.exe) - следовательно, вы не можете напрямую запустить update-database в сценарии .cmd или .bat. .