"argument 'sql' cannot be null" 在 EF DbMigration 中包含 "Go" 时

"argument 'sql' cannot be null" when including "Go" in EF DbMigration

将 SQL 服务器 GO command 添加到 DbMigration.Sql("GO ...") 调用时导致 Update-Database entity framework 方法抛出异常 "argument 'sql' cannot be null"。

删除 GO 并且迁移失败,因为下一个 SQL 语句正在创建一个触发器,它必须是独立的。

我完全没有找到关于这个问题的信息,所以我认为 SO 可能会有所帮助。

通过阅读,我发现在 SQL Server GO 后面必须跟一个换行符,所以我认为这个问题的根本原因与此有关,以及 EF 如何解析SQL 在发送到数据库之前。

我解决问题的方法是发现 DbMigration.Sql(sql, suppressTransaction=false) 方法的可选参数。

suppressTransaction 强制 sql 查询与迁移的其余部分分开(通常这都称为一个事务)。因此,我根本不需要使用 GO