C# 有没有办法从SQL Server获取大量JSON?
我试图从Microsoft SQL Server中获取JSON,为了与我的ASP.NET核心后端通信,我似乎只能使用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
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 ServerNVARCHAR(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端可以在任何规模下工作,甚至是大批量。