从 ASP.NET Core Web API 中的存储过程接受嵌套 JSON 时出错?

Getting error in accepting nested JSON from stored procedure in ASP.NET Core Web API?

我正在使用 Entity Framework 调用存储过程。我的存储过程正在创建 JSON,我想以字符串的形式将 JSON 传递给 Web API。

我的存储过程是:

CREATE PROCEDURE [dbo].[CreateJson]
    @AppointmentID int,
    @JsonOutput nvarchar(max) OUTPUT
AS
BEGIN
    SET NOCOUNT ON;
    SET @JsonOutput = (SELECT TOP 1 AppointmentID, ReturnCode
                       FROM appointments
                       WHERE appointmentID = @AppointmentID
                       FOR JSON PATH, WITHOUT_ARRAY_WRAPPER)
    RETURN;
END

API 接受字符串的实体 class:

public partial class sp_test
{
    public string jsonOutput { get; set; }
}

API 控制器:

[HttpGet]
public async Task<ActionResult<IEnumerable<sp_test>>> Getsp_test(int AppointmentID)
{
    string StoredJson = "exec CreateJson " +
                        "@AppointmentID = " + AppointmentID;

    return await _context.sp_test.FromSqlRaw(StoredJson).ToListAsync();
}

错误:

我能得到一些关于我做错了什么的指导吗?谢谢

Declare @getJson nvarchar(max);
EXEC CreateJson
    @AppointmentIDr =  AppointmentID,
    @JsonOutput = @getJson OUTPUT

如果您想获得与 sp_test 实体兼容的结果集,以便 FromSqlRaw

可以使用该结果集
CREATE PROCEDURE [dbo].[CreateJson]
    @AppointmentID int
AS
BEGIN
    SET NOCOUNT ON;
    select (
       SELECT TOP 1 AppointmentID, ReturnCode 
       FROM appointments
       WHERE appointmentID = @AppointmentID
       FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
    ) jsonOutput;
    RETURN;
END