如何在 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)
...
我有一个带有 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)
...