当我想创建或更改存储过程和视图时,我将avoid the "should be the first statement in a batch file"错误放在EXEC
语句中,如下所示:
Sql(EXEC('Alter View dbo.Foos As etc'))
这一切都很好,但它确实意味着我必须一直逃避撇号。
我最近意识到DbMigration.Sql方法采用名为suppressTransaction
的布尔参数。它在文档中描述如下:
一个值,指示SQL是否应该在。之外执行 用于迁移过程的事务。
所以我测试了它而没有使用EXEC
:
e.g。 Sql('Create View dbo.Foos As etc', true);
它奏效了,但我担心的是这个。如果我在迁移中的其他地方犯了错误怎么办?我假设其他所有内容都被回滚但是这个Sql没有。我能否以不确定的状态结束数据库?如果这是真的,这个参数有什么用?