DbMigration.Sql method: can I use the “suppressTra

2019-06-25 09:56发布

问题:

When I want to create or alter stored procedures and views, I avoid the "should be the first statement in a batch file" error by putting the sql inside an EXEC statement like this:

Sql(EXEC('Alter View dbo.Foos As etc'))

This is all very well, but it does mean I have to escape apostrophes all the time.

I recently realised that the DbMigration.Sql method takes a boolean parameter named suppressTransaction. It is described like this in the documentation:

A value indicating if the SQL should be executed outside of the transaction being used for the migration process.

so I tested it out without using EXEC :

e.g. Sql('Create View dbo.Foos As etc', true);

It worked, but my concern is this. What if I make a mistake somewhere else in my migrations? I assume everything else gets rolled back but this Sql doesn't. Could I end up with the database in an indeterminate state? If that is true what use is this parameter?