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

本文关键字:Database 存储过程 SqlQuery sql Server SQL db 我的 执行 | 更新日期: 2023-09-27 18:36:32

我正在尝试从我的 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[])' 不能是 从使用情况推断。尝试指定类型参数 明确地。 WebRole C:''H''server''WebRole''Controllers''Web API - 数据''消息控制器.cs 28 个活动

谁能告诉我我在这里做错了什么。 这也只是对我的测试,但我希望能够让事务提交或回滚。我需要在 C# 端做些什么来实现这一点吗?

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

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

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