返回带有C#中动态列的动态查询,并将其转换为json?

时间:2019-07-26 09:47:43

标签: c# sql

我有一个通用对象,用户可以用不同的数据类型来创建该对象,例如:用户可以使用所需字段创建计算机对象。我已经设计了数据库,并且使用了能够正常运行的数据透视表(如下所示)进行了查询,因此结果如下: “ https://i.imgur.com/kFi8Yvj.png

我是否应该找到另一种方式,例如将所有数据加载到c#中而不进行数据透视并将数据合并到javascript中?

我尝试使用此方法Entities.Database.SqlQuery,然后尝试返回json。结果包含3个元素的列表,但元素为空。

这是sql查询:

DECLARE @cols NVARCHAR(MAX), @query NVARCHAR(MAX);
set @cols =
STUFF(
REPLACE(
(
       SELECT '#!' + QUOTENAME(ocf.Name) AS 'data()' 
       from ObjectCustomField ocf  
       where ObjectTypeId = 1 
       FOR XML PATH('')
),' #!',',')
, 1, 2, '');

SET @query = 'SELECT ObjectId,Name '+@cols+',MainPhoto
from 
(
select o.ObjectId,o.Name,o.MainPhoto,ocfd.ObjectCustomFieldName,ocfd.Value
from CustomObject o
join ObjectCustomFieldData ocfd on o.ObjectId = ocfd.ObjectId
where ObjectTypeId = 1
)a
PIVOT
(
       max([value])
       for ObjectCustomFieldName
       in ('+@cols+')
)
as PivotTable';
EXECUTE (@query);

0 个答案:

没有答案