DbMigrationsConfigurationのシードメソッドをオーバーライドするか、移行を作成できます。
これで、aspnet_regsql.exeから生成できるSQLを実行するか、権限があればaspnet_regsql.exeを実行できるようになります。
更新1:
私は次のようにすることになりました:
Add-Migration AspNetRegSql
public partial class AspNetRegSql : DbMigration
{
public override void Up()
{
Migrate(false);
}
public override void Down()
{
Migrate(true);
}
private static void Migrate(bool down)
{
var action = down ? "R" : "A";
var connectionstring = ConfigurationManager.ConnectionStrings["DataContext"];
var arguments = string.Format(@"-Q -C ""{0}"" -{1} mrp", connectionstring, action);
var processStartInfo = new ProcessStartInfo
{
WorkingDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase).Replace(@"file:\", string.Empty),
FileName = "aspnet_regsql.exe",
Arguments = arguments,
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden
};
using (var process = Process.Start(processStartInfo))
{
process.WaitForExit();
}
}
}
次に、プロジェクトに「aspnet_regsql.exe」を追加し、ビルドアクションを「新しい場合はコピー」に変更しました。
更新2:
NSGagaが投稿したライブラリを知りませんでした。まだ見ていませんが、検討することをお勧めします。
更新3:
いくつかの便利なリンク: