DbContext ExecuteSQLCommand sans parameters

J'essaie de transmettre une string SQL pour supprimer certains loggings. J'utilise la fonction DbContext.Database.ExecuteSqlCommand, mais en plus de la string SQL, il attend une list de parameters de la forme: parameters Params []

Comme je n'ai pas besoin d'envoyer de parameters, j'ai essayé de passer null à la place, mais cela génère une erreur disant que null n'est pas un paramètre valide. Je ne peux pas find une surcharge de la méthode. Comment envoyez-vous une command SQL ne nécessitant aucun paramètre supplémentaire? Voici un exemple de mon code:

db.Database.ExecuteSqlCommand("DELETE FROM SignoffCommentAttachment WHERE SignoffCommentAttachment.SignoffCommentID IN (SELECT [SignoffCommentID] FROM [SignoffComments] WHERE SignoffID = " + signOffID.ToSsortingng() + ")", null); 

Afin d'get un peu de protection contre l'injection SQL, vous DEVEZ utiliser les parameters ici. Vous avez un paramètre. Vous devriez probablement utiliser une procédure stockée, mais c'est une autre question.

Je le coderais comme ça …

 var parms = new ParameterCollection(); parms.Add("signOffId", signOffID); db.Database.ExecuteSqlCommand("DELETE FROM SignoffCommentAttachment WHERE SignoffCommentAttachment.SignoffCommentID IN (SELECT [SignoffCommentID] FROM [SignoffComments] WHERE SignoffID = @signOffID)", parms); 

Je n'ai pas vérifié ma syntaxe mais c'est la méthode que j'utiliserais. Seulement, je voudrais utiliser une procédure stockée.

Les parameters sont un paramètre params, donc vous pouvez passer 0 à plusieurs objects pour cela. Cela devrait fonctionner

 db.Database.ExecuteSqlCommand("DELETE FROM SignoffCommentAttachment WHERE SignoffCommentAttachment.SignoffCommentID IN (SELECT [SignoffCommentID] FROM [SignoffComments] WHERE SignoffID = " + signOffID.ToSsortingng() + ")"); 

Vous devriez vraiment paramétrer signOffID. Quelque chose comme

 db.Database.ExecuteSqlCommand("DELETE FROM SignoffCommentAttachment WHERE SignoffCommentAttachment.SignoffCommentID IN (SELECT [SignoffCommentID] FROM [SignoffComments] WHERE SignoffID = {0})", signOffID);