Tôi gặp sự cố khi gửi câu lệnh SQL thông qua DbContext sử dụng context.Database.ExecuteSqlCommand()
.SqlException: Cú pháp Lỗi Gần 'GO'
Tôi cố gắng để thực hiện
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
này không thành công với chuỗi lỗi
Incorrect syntax near the keyword 'ALTER'.
Incorrect syntax near 'GO'.
Tuy nhiên chạy rằng tuyên bố chính xác trong SSMS chạy mà không có lỗi? Bất kỳ vấn đề nào tôi cần phải giải quyết liên quan đến ràng buộc mặc định thông qua DbContext. Tôi đã thấy vấn đề với những người sử dụng các ràng buộc và không có IsDbGenerated được đặt thành true. Tôi không chắc chắn như thế nào mà sẽ áp dụng ở đây mặc dù.
Đó là đúng đối với SSMS, tuy nhiên ngay cả khi bạn thay đổi dấu tách hàng loạt trong SSMS, mã ở trên sẽ vẫn bị nghẹt thở trên 'GO'. –
Một lưu ý mà tôi muốn thêm. Nếu như tôi, bạn thường muốn một số loại giá trị trả về từ các truy vấn của bạn mà bạn đang chuyển qua SMO, hãy lưu ý rằng ExecuteWithResults sẽ trả về các ngoại lệ khi nó chạy vào câu lệnh GO và ALTER. Tôi đã tìm ra điều này một chút trước đây, và cuối cùng chỉ cần đặt một tùy chọn để ExecuteNonQuery trên giao diện người dùng của chúng tôi được kiểm tra tại thời gian chạy tập lệnh. – CodeWarrior