这是一个“最佳实践”问题。我们正在就这个话题进行内部讨论,并希望获得更广泛受众的意见。
我需要将我的数据存储在MS SQL Server
具有普通列和行的传统表中。有时我需要将 a 返回DataTable
到我的 Web 应用程序,而其他时候我需要返回一个JSON
字符串。
目前,我将表格返回到中间层并将其解析为JSON
字符串。这似乎在大多数情况下运行良好,但有时在大型数据集上需要一段时间(解析数据,而不是返回表)。
我正在考虑修改存储过程以选择性地返回一个DataTable
或一个JSON
字符串。我会简单地@isJson bit
向 SP 添加一个参数。
如果用户想要字符串而不是表,SP 将执行如下查询:
DECLARE @result varchar(MAX)
SELECT @result = COALESCE(@results ',', '') + '{id:"' + colId + '",name:"' + colName + '"}'
FROM MyTable
SELECT @result
这会产生如下内容:
{id:"1342",name:"row1"},{id:"3424",name:"row2"}
当然,用户也可以通过@isJson参数传入false来获取表。
我想明确一点,数据存储不受影响,任何现有视图和其他流程也不受影响。这只是对某些存储过程的结果的更改。
我的问题是:
- 有没有人在大型应用程序中尝试过这个?如果有,结果如何?
- 您看到/期望这种方法有哪些问题?
- 除了以这种方式修改存储过程或在中间层解析字符串之外,是否有更好更快的方法从 SQL Server 中的表转到 JSON?