我知道GO
不是实际有效的SQL,而是SSMS用来将脚本分成批处理的关键字。我不明白的是为什么它仍然可以在Migrations中使用。
我有几个带有GO
的脚本,并将它们作为EF Core Migrations的一部分运行,这没有给我带来任何麻烦:
migrationBuilder.Sql(File.ReadAllText("ScriptContainingGO.sql"));
我最近更改了一种工具,以在数据库上下文上的迁移之外运行脚本:
dbContext.Database.ExecuteSqlCommand(File.ReadAllText("ScriptContainingGO.sql"));
这会导致错误:
System.Data.SqlClient.SqlException(0x80131904):“ GO”附近的语法不正确。
我了解,但是如果作为迁移的一部分,为什么它可以正常工作?