如何将值从DBContext中的存储过程返回到Web API控制器

本文关键字:返回 存储过程 Web 控制器 API DBContext | 更新日期: 2023-09-27 18:19:55

我正在尝试验证要从Web API 2和存储库模式插入到SQL中的值。数据库有一个存储过程,用于检查传递的值(外键依赖项等)。存储的proc为每个无效的值返回-1,否则isValid=true。我需要将无效的参数传递给我的存储库/控制器,这样我就可以向最终用户返回一条http响应消息,指示无效的参数。以下是到目前为止我在DBContext中的内容。我该怎么做?

public void Api_Event_Prefs_InsertUpdateCheck(int individualID, int eventID) {
        var p_PrefID = new SqlParameter() { ParameterName = "@PrefID", Value = System.Data.SqlTypes.SqlInt32.Null, Direction = ParameterDirection.InputOutput };
        var p_individualID = new SqlParameter() { ParameterName = "@IndividualID", Value = individualID, Direction = ParameterDirection.InputOutput };
        var p_eventID = new SqlParameter() { ParameterName = "@eventID", Value = eventID, Direction = ParameterDirection.InputOutput };
        var p_IsValid = new SqlParameter() { ParameterName = "@IsValid", Value = System.Data.SqlTypes.SqlBoolean.False, Direction = ParameterDirection.Output };
        this.Database.ExecuteSqlCommand("Exec dbo.Api_Event_Prefs_InsertUpdateCheck @PrefID, @IndividualID OUT, @EventID OUT, @IsValid OUT", p_PrefID, p_individualID, p_eventID, p_IsValid);
    }

如何将值从DBContext中的存储过程返回到Web API控制器

您需要使用Database.SqlQuery,它允许您执行存储过程或任何其他查询,并获取执行结果。

ExecuteSqlCommand仅适用于运行不需要返回数据的查询(例如更新或DDL语句)。