Impossible d'exécuter ma procédure stockée SQL Server à l'aide de db.Database.SqlQuery (sql)

J'essaie d'exécuter une procédure stockée SQL Server à partir de mon code C #. Voici le code que j'utilise:

var sql = @"test"; try { var query = db.Database.SqlQuery(sql); return Ok(); } catch (Exception ex) { return BadRequest(ex.Message); } 

Voici la procédure stockée:

 CREATE PROCEDURE [dbo].[test] AS BEGIN BEGIN TRY BEGIN TRANSACTION; PRINT 'INSERT 1 START'; INSERT INTO Message (Text, TypeId) VALUES ('Message 5', 0); THROW 50002,'thrown',1; PRINT 'INSERT 2 START'; INSERT INTO Message (Text, TypeId) VALUES ('Message 6', 0); PRINT 'GOT HERE'; COMMIT TRANSACTION; RETURN; END TRY BEGIN CATCH ROLLBACK TRANSACTION; RETURN; END CATCH END 

Je reçois un message qui dit:

Code de gravité Description Erreur de suppression de ligne de file projet CS0411 Les arguments de type pour la méthode 'Database.SqlQuery (string, parameters object [])' ne peuvent pas être déduits de l'utilisation. Essayez de spécifier explicitement les arguments de type. WebRole C: \ H \ server \ WebRole \ Contrôleurs \ API Web – Data \ MessageController.cs 28 Active

Quelqu'un peut-il me dire ce que je fais mal ici. Aussi c'est juste un test pour moi mais j'aimerais pouvoir valider ou annuler la transaction. Y a-t-il quelque chose que je dois faire du côté C # pour rendre cela possible?

Essayez d'utiliser la méthode ExecuteSqlCommand , comme ci-dessous:

 db.Database.ExecuteSqlCommand("exec dbo.test");