Tengo problemas para enviar una instrucción SQL a través de un DbContext usando context.Database.ExecuteSqlCommand()
.SqlException: Error de sintaxis Cerca de 'IR'
Estoy tratando de ejecutar
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
Esta falla con la cadena de error
Incorrect syntax near the keyword 'ALTER'.
Incorrect syntax near 'GO'.
Sin embargo corriendo esa declaración exacta en SSMS se ejecuta sin errores? Cualquier problema que deba resolver con respecto a la restricción predeterminada a través del DbContext. He visto problemas con personas que usan restricciones y que no tienen IsDbGenerated configurado en verdadero. No estoy seguro de cómo se aplicaría aquí sin embargo.
Es decir cierto para SSMS; sin embargo, incluso si cambia el separador de lotes en SSMS, el código anterior todavía se ahogará en el 'GO '. –
Una nota que quiero agregar. Si, como yo, a menudo quiere algún tipo de valor de retorno de sus consultas que está pasando a través de SMO, tenga en cuenta que ExecuteWithResults devolverá excepciones cuando se encuentre con las sentencias GO y ALTER. Descubrí esto hace un momento y terminé simplemente poniendo una opción en ExecuteNonQuery en nuestra UI que se verifica en el tiempo de ejecución del script. – CodeWarrior