【发布时间】:2021-08-02 21:42:41
【问题描述】:
我在 .Net Core 5 中开发了一个 web api,它使用 dapper 运行表值函数并返回 SQL 结果。然后将这些结果用于填充 VueJS 前端的各种选择框。然而,当我开始更多地构建前端时,我意识到我的 JSON 数组可以嵌套,以真正帮助减少我向服务器发出的请求数量,因为我的选择框是依赖的。例如,一个选择框包括州,然后下一个选择框与这些州的城市相关。通过在数据库中的状态表和城市表之间添加内部连接,可以轻松调整表值函数以返回单个表。加入键是一个名为 STATE_ID 的字段。因此,由于每个州有多个城市,我只有多行。所以现在我想弄清楚的是如何在我的 web api 和我的表值函数结果中获取这个结果而不使用模型到嵌套的 json 数组中,这样我的结果如下:
[{state: 'Maryland', cities :[{city: 'Baltimore'}, {city: 'Harford County'}]} ,
{state: 'Pennsylvania', cities :[{city: 'York'}, {city: 'Fawn Grove'}]}]
来自 A2Q00001_StateInfo(USERNUMBER) 的表值函数结果:
| State_ID | State_Name | City_Name |
|---------------------|------------------|---------------------|
| 1 | Maryland | Baltimore |
| 1 | Maryland | Harford County |
| 2 | Pennsylvania | York |
| 2 | Pennsylvania | Fawn Grove |
我的控制器如下:
public ActionResult StateAndCities([FromQuery] String USERNUMBER)
{
//We have parameters here just in case we want to use them
IEnumerable queryResult;
String query = "select * from dbo.A2Q00001_StateInfo(@USERNUMBER);";
using (var connection = new SqlConnection(connectionString))
{
queryResult = connection.Query(query, new { USERNUMBER = USERNUMBER });
}
return Ok(queryResult);
}
我在网上看到的所有教程都使用模型来创建嵌套的 JSON 对象并返回它,但是我不确定如何使用 asp.net 核心中 Ok() 函数中的序列化来创建嵌套对象。这甚至可能吗,还是我需要对 dapper 查询中的 queryResult 执行操作?朝着正确方向的任何一点都会很棒。
【问题讨论】:
标签: json vue.js dapper asp.net-core-5.0