我正在尝试从我的C#代码执行SQL Server存储过程。这是我正在使用的代码:
var sql = @"test";
try
{
var query = db.Database.SqlQuery(sql);
return Ok();
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
这是存储过程:
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
我收到的消息是:
严重级代码描述项目文件行抑制状态 错误CS0411方法的类型参数 ' Database.SqlQuery(string,params object [])'不可能是 从用法推断。尝试指定类型参数 明确。 Web角色C:\ H \ server \ WebRole \ Controllers \ Web API - Data \ MessageController.cs 28活动
谁能告诉我这里做错了什么。这对我来说只是一个测试,但我希望能够进行事务提交或回滚。在C#方面我需要做些什么来实现这个目标吗?
答案 0 :(得分:4)
尝试使用ExecuteSqlCommand
方法,如下所示:
db.Database.ExecuteSqlCommand("exec dbo.test");