【发布时间】:2017-10-27 09:02:24
【问题描述】:
我尝试在 SQL Server 中使用 json。 我已经创建了一个存储过程:
CREATE PROC [Production].[pr_GetForSearchAutocomplete]
WITH ENCRYPTION
AS
BEGIN
SELECT [Code] AS 'Name'
,b.[Name] AS 'Brand'
FROM [Production].[Products] p
INNER JOIN [Production].[Brands] b on p.[BrandID] = b.[BrandID]
UNION
SELECT oe.[Name] AS 'Name'
,ob.[Name] AS 'Brand'
FROM [Production].[OriginalElements] oe
INNER JOIN [Production].[OeBrands] ob on ob.[OeBrandID] = oe.[OeBrandID]
FOR JSON PATH
END
GO
现在,我尝试在整体框架中调用它。实体模型中的函数导入仅返回集合。所以
public async Task<string> GetForSearchAutocomplete()
{
string query = "EXEC [Production].[pr_GetForSearchAutocomplete]";
var result =string.Concat(_context.Database.SqlQuery<string>(query));
return result;
}
在 Web API 中,我尝试像这样使用它。
public async Task<IHttpActionResult> GetForSearchAutocomplete()
{
using (var unitOfWork = Factory.Create())
{
var result = await unitOfWork.GetForSearchAutocomplete();
return Json(result);
}
}
我得到的结果是:
"[{\"Name\":\"11111111111001\",\"Brand\":\"888\"},{\"Name\":\"\\\"YO\\\"\",\"Brand\":\"FLEETGUARD\"},{\"Name\":\"11111111111002\",\"Brand\":\"FLEETGUARD\"}
…]"
但它是一个字符串,而不是 json 数组,因为我认为 GetForSearchAutocomplete() 返回字符串。
现在我必须在 Web API 中创建类并将这个字符串反序列化为 json 数组。但我看不出有什么区别,从存储过程中返回一个列表并在 Web API 中使用Json(myList)。
那么,还有其他方法可以在 C# 中使用带有 json 的存储过程吗?
【问题讨论】:
标签: c# sql-server json stored-procedures