有没有办法从SQL Server获取大量JSON?

时间:2019-07-26 15:48:44

标签: c# tsql asp.net-core ef-core-2.1

我正在尝试从Microsoft SQL Server中获取JSON,并且为了与我的ASP.NET Core后端进行通信,我似乎只能使用NVARCHAR允许的最大大小到8,000个字符。但是我需要获取成千上万个JSON字符的列表。

var @params = new SqlParameter[] {
            new SqlParameter("@returnVal", System.Data.SqlDbType.NVarChar, 8000) { Direction = System.Data.ParameterDirection.Output },
            new SqlParameter("@ID", libraryID)
};

await this.Database.ExecuteSqlCommandAsync("SET @returnVal = (SELECT * FROM Rates WHERE LibraryID=@ID FOR JSON AUTO)", @params);
return @params[0].Value as string;

我希望上述代码的输出为8,000个字符,因为这似乎是SQL的限制。有没有办法取回所有数据?

我的目标是尝试从数据库中下载大量数据作为JSON,而不必将其映射到POCO,然后使用第三方JSON库进行序列化。

谢谢!

2 个答案:

答案 0 :(得分:2)

如果可能,请更改字段类型和/或使用正确的ADO.NET参数类型来绑定数据。

传统上,我会使用 TEXT 类型,但是如今已弃用,因此您可以使用:

NVARCHAR(MAX)

答案 1 :(得分:1)

SQL Server NVARCHAR(MAX)数据类型最多可以存储2GB。

您应将NVarChar的大小设置为-1

new SqlParameter("@returnVal", System.Data.SqlDbType.NVarChar, -1)