Can Entity Framework 6 migrations include a transaction around scripts?

Very simple question, I use migrations in framework 6 essence and as a command

update-database -script 

But is there a way to generate a script, but it is completed by a transaction?

The problem is that if the script fails, I have to expand it

+5
source share
1 answer

This is what I use only in release mode for scripting:

 public class MigrationScriptBuilder : SqlServerMigrationSqlGenerator { #if !DEBUG protected override void Generate(SqlOperation sqlOperation) { Statement("GO"); base.Generate(sqlOperation); Statement("GO"); } public override IEnumerable<MigrationStatement> Generate(IEnumerable<MigrationOperation> 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 } 

You must connect this to the DatabaseMigrationsConfiguration . Example:

 public sealed class DatabaseMigrationsConfiguration : DbMigrationsConfiguration<DatabaseContext> { public DatabaseMigrationsConfiguration() { SetSqlGenerator("System.Data.SqlClient", new MigrationScriptBuilder()); } } 
+6
source

All Articles