Ho difficoltà a inviare un'istruzione SQL tramite un DbContext utilizzando context.Database.ExecuteSqlCommand()
.SqlException: Errore di sintassi vicino a "GO"
sto provando ad eseguire
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
questo viene a mancare con la stringa di errore
Incorrect syntax near the keyword 'ALTER'.
Incorrect syntax near 'GO'.
Tuttavia in esecuzione questa affermazione esatta in SSMS viene eseguito senza errori? Eventuali problemi che devo risolvere per quanto riguarda il vincolo predefinito attraverso DbContext. Ho riscontrato problemi con le persone che utilizzano i vincoli e che non hanno impostato IsDbGenerated su true. Non sono sicuro di come ciò si applicherebbe qui però.
Cioè true per SSMS, tuttavia, anche se si modifica il separatore di batch in SSMS, il codice sopra continuerà a soffocare sul 'GO'. –
Una nota che voglio aggiungere. Se come me, spesso desideri una sorta di valore di ritorno dalle query che stai passando tramite SMO, tieni presente che ExecuteWithResults restituirà eccezioni quando viene eseguito nelle istruzioni GO e ALTER. L'ho scoperto poco fa, e ho finito per mettere solo un'opzione per ExecuteNonQuery sull'interfaccia utente che viene controllata al momento dell'esecuzione dello script. – CodeWarrior