У меня возникла проблема с отправкой SQL-запроса через DbContext с помощью context.Database.ExecuteSqlCommand()
.SqlException: Ошибка синтаксиса рядом с 'GO'
Я пытаюсь выполнить
CREATE TABLE Phones([Id] [uniqueidentifier] NOT NULL PRIMARY KEY,
[Number] [int],[PhoneTypeId] [int])
GO
ALTER TABLE [dbo].[Phones] ADD CONSTRAINT [DF_Phones_Id]
DEFAULT (newid()) FOR [Id]
GO
Это не может со строкой ошибки
Incorrect syntax near the keyword 'ALTER'.
Incorrect syntax near 'GO'.
Однако работает, что точное утверждение в SSMS работает без ошибок? Любые проблемы, которые мне нужно решить относительно ограничения по умолчанию через DbContext. Я вижу проблемы с людьми, использующими ограничения, и не имея значение IsDbGenerated для true. Я не уверен, как это применимо здесь.
То есть true для SSMS, однако, даже если вы измените разделитель партий в SSMS, приведенный выше код по-прежнему будет подавлять «GO». –
Одна заметка, которую я хочу добавить. Если, как и я, вам часто требуется какое-то возвращаемое значение из ваших запросов, которые вы передаете через SMO, имейте в виду, что ExecuteWithResults возвратит исключения, когда они будут запущены в операторы GO и ALTER. Я узнал об этом несколько лет назад и в итоге просто добавил вариант ExecuteNonQuery в наш интерфейс, который проверяется во время выполнения скрипта. – CodeWarrior