Подтвердить что ты не робот

Автоматизация EF-миграции "Обновление-База данных - Script"

Я использую EF-миграции для отслеживания изменений в нашей модели кода EF с кодовым кодом. Теперь мне нужно создать один SQL- Script для каждой миграции, чтобы я мог передать этот набор скриптов администратору базы данных.

Мне удалось создать SQL-скрипты с Update-Database -Script ...

Однако я бы хотел автоматизировать это. Я надеялся, что переключатель - Script примет параметр, определяющий, где писать SQL, но это не так. Кроме того, перенаправление вывода не работает, поскольку SQL script не записывается в STDOUT, а во временный файл. Я не вижу способа получить этот временный файл из script.

Любые идеи, как автоматизировать генерацию Migrations → SQL script? Может быть, есть какая-то волшебная хитрость, о которой я не знаю?

EDIT: Кстати, использование migrate.exe или любого другого подхода, поддерживающего миграцию, не является опцией, предоставление SQL-скриптов является обязательным.

4b9b3361

Ответ 1

Наконец, я нашел решение. То, о чем я не знал, это то, что можно генерировать SQL-скрипты из кода С# следующим образом:

using System.Data.Entity.Migrations;
using System.Data.Entity.Migrations.Infrastructure;

var migrator = new DbMigrator(new Configuration());
var scriptor = new MigratorScriptingDecorator(migrator);
var sql = scriptor.ScriptUpdate("Name-Of-Source-Migration", "Name-Of-Target-Migration");

Вместе с migrator.GetLocalMigrations() у вас есть полный контроль над детализацией сгенерированных скриптов.