Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法从SQL Server获取大量JSON?_C#_Tsql_Asp.net Core_Ef Core 2.1 - Fatal编程技术网

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

C# 有没有办法从SQL Server获取大量JSON?,c#,tsql,asp.net-core,ef-core-2.1,C#,Tsql,Asp.net Core,Ef Core 2.1,我试图从Microsoft SQL Server中获取JSON,为了与我的ASP.NET核心后端通信,我似乎只能使用NVARCHAR允许的最大大小,最多8000个字符。但我需要获取一个包含数万个JSON字符的列表 var @params = new SqlParameter[] { new SqlParameter("@returnVal", System.Data.SqlDbType.NVarChar, 8000) { Direction = System.Data.P

我试图从Microsoft SQL Server中获取JSON,为了与我的ASP.NET核心后端通信,我似乎只能使用
NVARCHAR
允许的最大大小,最多8000个字符。但我需要获取一个包含数万个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;
我希望上述代码的输出为8000个字符,因为这似乎是SQL的限制。有没有办法找回所有的数据

我的目标是尝试以JSON的形式从数据库下载大量数据,而无需将其映射到POCO,然后使用第三方JSON库对其进行序列化


谢谢

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

传统上我会使用文本类型,但现在这种类型已被弃用,因此您可以使用:

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

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

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

NVARCHAR(最大)大小为2GB
newsqlparameter(“@returnVal”,System.Data.SqlDbType.NVarChar,-1)
@LukaszSzozda您是对的,使用-1意味着我不必像以前那样猜测大小或假设8000。你应该把它作为一个答案,这样我就可以标记它了。我已经用它在SQL端取得了成功,但是注释中的@LukaszSzozda answer使.NET端可以在任何规模下工作,甚至是大批量。