gpt4 book ai didi

c# - 如何使用 Entity Framework Core 2.0 检索 JSON 存储过程的结果?

转载 作者:行者123 更新时间:2023-12-05 07:28:14 24 4
gpt4 key购买 nike

再见,我正在处理一个 Web API Core 2 项目,我正在使用 Entity Framework Core 2 和 SQL Azure 数据库。

实际上

在 SQL Azure 数据库中,我有一个返回 JSON 的存储过程,如下所示:

CREATE PROCEDURE [dbo].[sp_Procedura]
AS
BEGIN

SET NOCOUNT ON

DECLARE @data NVARCHAR(MAX) =
(SELECT
*
FROM
dbo.Entity
FOR JSON AUTO)

select 0 as 'Id', @data as 'data'
END

实际上,要读取结果,我必须创建一个实体来映射结果并使用以下代码读取数据:

string json = myContext
.JsonResult.FromSql("exec dop.sp_Procedura")
.ToList().FirstOrDefault().data;

在实体类下面:

public class Entity
{
[Key]
public int Id { get; set; }

public string data { get; set; }
}

需要

我认为这个解决方案并不完全干净。我的存储过程应该如下所示:

CREATE PROCEDURE [dbo].[sp_Procedura]
AS
BEGIN

SET NOCOUNT ON

SELECT
*
FROM
dbo.Entity
FOR JSON AUTO
END

像以前一样有一个存储过程,使用 EF Core 2.0 有没有办法像下面的伪代码一样读取 JSON 结果?

string json = myContext.FromSql("exec dbo.sp_Procedura").Result;

谢谢

最佳答案

使用 newtonsoft.JSon nuget 包,您可以将实体转换为 JSON 并返回。不需要执行存储过程。

这种方式更快,因为 Entity Framework 可以使用二进制传输从SqlServer传输数据而不是整个字符串内容。

这里有一些 json 序列化的示例: https://www.newtonsoft.com/json/help/html/SerializeObject.htm

顺便说一下,我相信SqlServer里面也是用的newtonsoft.json。

关于c# - 如何使用 Entity Framework Core 2.0 检索 JSON 存储过程的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53516862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com