我在使用context.Database.ExecuteSqlCommand()
通過DbContext發送SQL語句時遇到問題。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。我不確定這將如何適用於此。
這是對於SSMS是正確的,但是即使你改變了SSMS中的批處理分隔符,上面的代碼仍然會扼殺「GO」。 – 2012-02-15 05:00:25
我想補充一點。如果像我一樣,通常需要通過SMO傳遞的查詢的某種返回值,請注意,ExecuteWithResults在運行到GO和ALTER語句時將返回異常。前一段時間我發現了這一點,最後只是在我們的用戶界面上提供了一個ExecuteNonQuery選項,並在腳本運行時進行檢查。 – CodeWarrior 2013-05-29 15:01:50