如何在 EF Core 5 中使用 JSON 输出调用存储过程

How to call a stored procedure with JSON output in EF Core 5

我有一个带有 JSON 格式输出的存储过程。你知道一个JSON格式输出的是字符串格式。

数据库上下文对象 returns 仅 table 类型。

例如:

_context.tableA.FromSqlRaw()

但是我的场景除了字符串之外没有任何类型。

如何使用字符串输出调用此存储过程并将结果呈现给客户端?

你必须使用输出参数

var output = new SqlParameter();
output.ParameterName = "@jsonOutput";
output.SqlDbType =  SqlDbType.NVarChar;
output.Direction = ParameterDirection.Output;

var param1 = new SqlParameter();
output.ParameterName = "@ID";
output.SqlDbType = SqlDbType.Int;


await _context.Database.ExecuteSqlRawAsync(
"EXEC dbo.SpName @ID={0} @jsonOutput={1} OUT", param1,output);

var json =output.Value;

存储过程

...
SET @jsonOutput = (SELECT ....
    FROM ...
    FOR JSON PATH, WITHOUT_ARRAY_WRAPPER)
...