【问题标题】:How to Return Data from connection.QueryFirst in ASP.NET Core API如何从 ASP.NET Core API 中的 connection.QueryFirst 返回数据
【发布时间】:2020-10-22 18:46:39
【问题描述】:

大家好,我正在学习 ASP.NET 核心 如何将数据从 SQLquery 返回到 json 目前我得到的结果都是空的

我的控制器代码sn-p

[HttpGet]
[Route("GetData")]
public DataMaster GetData()
{
    using (SqlConnection connection = new SqlConnection(_config.GetConnectionString("EmployeeDBConnection")))
    {
        var param = new DynamicParameters();
        //  param.Add("@prodtype", prodtype);
        return connection.QueryFirst<DataMaster>(" Select producttype,servicetype,servicesubtype,count(*) from master_table group by producttype,servicetype,servicesubtype");
    }

}

我得到的回应

{"callId":null,"callstartdate":null,"callstarttime":null,"calltype":null,"producttype":null,"servicetype":null,"callertype":null,"servicesubtype":null}

当我在数据库中执行查询时,我得到以下响应,应如何通过 API 控制器返回此响应 请帮忙。

【问题讨论】:

  • 预期行为。根据您的图像,第一行全部为空。然后我希望 QueryFirst 返回所有空值的响应。
  • 你想返回什么做什么?第一个非空行?还是所有结果?也许所有非空结果?
  • @PanagiotisKanavos 我想要除 Null 行之外的所有行吗?我该怎么做,你能帮忙吗
  • 使用Query并在查询中添加WHERE product type is NOT NULL

标签: c# asp.net-core-webapi dapper asp.net-core-3.1


【解决方案1】:

看来你使用dapper & QueryFirstExecute a query and map the first result to a dynamic list.

你应该使用QueryThe raw SQL query can be executed using the Query method and map the result to a strongly typed list.

使用Query&lt;DataMaster&gt; 代替QueryFirst&lt;DataMaster&gt; 并将返回类型更改为IEnumerable&lt;DataMaster&gt;

根据comment,您没有得到Count。我猜你在DataMaster 中有Count 属性,那么你需要在query 中为count 提供aliascount(*) AS Count,然后它将正确绑定。

[HttpGet]
[Route("GetData")]
public IEnumerable<DataMaster> GetData()
{
    using (SqlConnection connection = new SqlConnection(_config.GetConnectionString("EmployeeDBConnection")))
    {
        var param = new DynamicParameters();
        //  param.Add("@prodtype", prodtype);
        return connection.Query<DataMaster>(" Select producttype,servicetype,servicesubtype,count(*) AS Count from master_table group by producttype,servicetype,servicesubtype");
    }

}

【讨论】:

  • 感谢我尝试的帮助,它部分工作,但我没有得到 Count row 的响应,你能帮忙吗??
  • 我已经更新了答案,如果你想在DataMaster 中绑定Count 属性,那么你需要为count(*) 中的query 提供Count alias 作为@ 987654346@ 那么它会正确绑定。
猜你喜欢
  • 1970-01-01
  • 2016-10-14
  • 1970-01-01
  • 2020-01-23
  • 2016-12-17
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多