无法使用db.Database.SqlQuery(sql)执行我的SQL Server存储过程

时间:2016-02-28 15:00:08

标签: c# asp.net sql-server asp.net-web-api

我正在尝试从我的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#方面我需要做些什么来实现这个目标吗?

1 个答案:

答案 0 :(得分:4)

尝试使用ExecuteSqlCommand方法,如下所示:

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