web-dev-qa-db-ja.com

EF移行の自動化「Update-Database-Script」

EF移行を使用して、EFコードファーストDBモデルへの変更を追跡しています。次に、移行ごとに1つのSQLスクリプトを生成して、そのスクリプトのセットをDBAに渡す必要があります。

Update-Database -Script ...でSQLスクリプトを生成することができました

ただし、これを自動化したいと思います。 -ScriptスイッチがSQLの書き込み先を指定するパラメーターを受け入れることを望んでいましたが、そうではありません。また、SQLスクリプトはSTDOUTではなく一時ファイルに書き込まれるため、出力リダイレクトは機能しません。スクリプトからその一時ファイルを取得する方法がわかりません。

移行-> SQLスクリプトの生成を自動化する方法はありますか?たぶん、私が気付いていない魔法のパワーシェルのトリックがいくつかありますか?

編集:ちなみに、migrate.exeやその他の「移行対応」アプローチを使用することはできません。SQLスクリプトを配信する必要があります。

24
theDmi

ついに私は解決策を見つけました。私が気付いていなかったのは、次のようにC#コードから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()とともに、生成されたスクリプトの粒度を完全に制御できます。

32
theDmi