Entity Framework 6迁移是否可以包含围绕脚本的事务?

非常简单的问题,我在entity framework6中使用迁移,并且像命令一样

update-database -script 

但有没有一种方法可以生成脚本但是用事务包装它?

问题是,如果脚本失败,我必须取消它

这是我在发布模式下仅用于生成脚本的方法:

 public class MigrationScriptBuilder : SqlServerMigrationSqlGenerator { #if !DEBUG protected override void Generate(SqlOperation sqlOperation) { Statement("GO"); base.Generate(sqlOperation); Statement("GO"); } public override IEnumerable Generate(IEnumerable migrationOperations, string providerManifestToken) { yield return new MigrationStatement {Sql = "BEGIN TRAN"}; foreach (var migrationStatement in base.Generate(migrationOperations, providerManifestToken)) { yield return migrationStatement; } yield return new MigrationStatement {Sql = "COMMIT TRAN"}; } #endif } 

您应该在DatabaseMigrationsConfiguration 。 例:

 public sealed class DatabaseMigrationsConfiguration : DbMigrationsConfiguration { public DatabaseMigrationsConfiguration() { SetSqlGenerator("System.Data.SqlClient", new MigrationScriptBuilder()); } }