C# Dapper QueryAsync 到 ValueTuple 映射不正确

标签 c# dapper c#-7.0

我正在使用 dapper 和 C#7 ValueTuples(已安装的 nuget)执行以下查询:

await connection.QueryAsync<(int, Guid)>(
                $@"SELECT tenant, pid FROM Table 
                ORDER BY id
                OFFSET {skip} ROWS 
                FETCH NEXT {dbBatchSize} ROWS ONLY");

它返回 0 和 Guid.Empty 的列表。

如果我只使用 int 或只使用 Guid,它可以正常工作

我还尝试根据表中的列命名 ValueTuple:

await connection.QueryAsync<(int tenant, Guid pid)>("...")

同样的结果。

有人有什么建议吗? 提前致谢!

最佳答案

这是 dapper 的一个已知限制。它不支持将查询结果复制到 ValueTuple 中。 There is an open issue on Github requesting support for this .

该请求的 OP 创建了一个工作示例,说明如何在 4 月完成它,目前计划在 v2.0 版本中发布。

关于C# Dapper QueryAsync 到 ValueTuple 映射不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45562711/

相关文章:

c# - Dapper的execute方法对于插入和删除返回两种不同的结果

c# - 使用 Microsoft Graph token 通过 Jwt Bearer token 保护 ASP.NET Core Web API

c# - C#读取USB设备序列号

c# - 使用 Linq 从 XML 填充类

c# - 为什么事件不提供 3 种访问器方法?

c# - Dapper map multiple join Sql Query

c# - 使用多映射 API 时,如果您有 Id“, ”splitOn 以外的键,请确保设置 splitOn 参数与多个关系

c# - 为什么 "is"-operator 在 if 的范围比 if 更长?

c# - 为什么不能解构为只有一个值的元组?

sql - 基于引用记录的自定义排序