Я понимаю, что GO
не является действительным допустимым SQL, а вместо этого используется ключевым словом, используемым SSMS для разделения сценариев на пакеты. То, что я не понимаю, это то, почему это все еще работает в Миграции.
У меня есть несколько сценариев с GO
в них, и я запускаю их как часть EF Core Migrations, что не доставило мне никаких проблем:
migrationBuilder.Sql(File.ReadAllText("ScriptContainingGO.sql"));
Недавно я внес изменение в инструмент для запуска сценариев вне Миграции в контексте базы данных:
dbContext.Database.ExecuteSqlCommand(File.ReadAllText("ScriptContainingGO.sql"));
Это приводит к ошибке:
System.Data.SqlClient.SqlException (0x80131904): неверный синтаксис рядом с GO.
Что я понимаю, но почему это работает, если часть миграции?