Dapper 中的 QueryMultiple 只显示第一个列表

QueryMultiple in Dapper only showing the first list

我正在使用 dapper 尝试同时发送多个查询。我有 2 个不同的查询要使用。但是,无论我尝试什么,我只能得到找到 1 个查询的方法。

首先,这是控制器:

[HttpGet]
public async Task<IActionResult> Test(RequestOverview model)
{

    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }
    try
    {
        await _request.Test(model);
    }
    catch (Exception ex)
    {

        return BadRequest(ex.Message);
    }
    return Ok();
}

接口:

Task<bool> Test(RequestOverview model);

型号:

public class TestT
{
    public string vehicleRegNr { get; set; } = "";
}

public class TestE
{
    public string dealerName { get; set; } = "";
}

旁注:整个class的名字是RequestOverview

下面是我在使用dapper的方法上的一些尝试:

// attempt 1
public async Task<bool> Test(RequestOverview model)
{

    string query = @"SELECT TOP 5 RegNumber as vehicleRegNr FROM [dbo].[Vehicle]; 
                     SELECT TOP 5 Retailer.Name as dealerName FROM [dbo].[Retailer]";

    using (var multi = _sqlconnection.QueryMultiple(query, null))
    {
        List<TestT> list1 = multi.Read<TestT>().AsList();
        List<TestE> list2 = multi.Read<TestE>().AsList();
    }

    return true;
}



attempt 2//
public async Task<bool> Test(TestT model)
{
    string query = @"SELECT TOP 5 RegNumber as vehicleRegNr FROM [dbo].[Vehicle]; 
                     SELECT TOP 5 Retailer.Name as dealerName FROM [dbo].[Retailer]";

    using (var multi = _sqlconnection.QueryMultiple(query, null))
    {
        List<dynamic> list1 = multi.Read<dynamic>().AsList();
        List<dynamic> list2 = multi.Read<dynamic>().AsList();
    }

    return true;
}

(在尝试 2 中,我只使用一个模型 class TestT,它具有 vehicleRegNrdealerName 作为参数)

但是,无论我在调试时得到什么输出:

列表 2 总是以空结尾,有人知道为什么吗? 感谢您的帮助。 (旁注:列表 1 包含 vehicleRegNr

我无法重现该问题,创建了一个示例 https://dotnetfiddle.net/j0L0kd 并且 QueryMultiple 按预期工作。

你可以看到结果:

所以我怀疑您要么在 multi.Read<dynamic>().AsList(); 执行之前检查了 list2 值,要么在第二个查询 returns 什么都没有 :)