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
,它具有 vehicleRegNr
和 dealerName
作为参数)
但是,无论我在调试时得到什么输出:
列表 2 总是以空结尾,有人知道为什么吗?
感谢您的帮助。
(旁注:列表 1 包含 vehicleRegNr
)
我无法重现该问题,创建了一个示例 https://dotnetfiddle.net/j0L0kd 并且 QueryMultiple
按预期工作。
你可以看到结果:
所以我怀疑您要么在 multi.Read<dynamic>().AsList();
执行之前检查了 list2
值,要么在第二个查询 returns 什么都没有 :)
我正在使用 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
,它具有 vehicleRegNr
和 dealerName
作为参数)
但是,无论我在调试时得到什么输出:
列表 2 总是以空结尾,有人知道为什么吗?
感谢您的帮助。
(旁注:列表 1 包含 vehicleRegNr
)
我无法重现该问题,创建了一个示例 https://dotnetfiddle.net/j0L0kd 并且 QueryMultiple
按预期工作。
你可以看到结果:
所以我怀疑您要么在 multi.Read<dynamic>().AsList();
执行之前检查了 list2
值,要么在第二个查询 returns 什么都没有 :)