C#Dapper QueryAsync到ValueTuple没有正确映射

问题描述 投票:2回答:2

我正在使用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)>("...")

结果相同。

有人有任何提示吗?提前致谢!

c# dapper c#-7.0
2个回答
5
投票

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

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


4
投票

Dapper似乎支持自v.1.50.4以来的ValueTuple查询映射,尽管David Arno指出的问题仍然是开放的。我们在项目中已经使用了这个功能一段时间了。

我也无法在发行说明中找到任何增加支持的提及,但我设法在Dapper的测试项目中找到了这个功能的example usage

© www.soinside.com 2019 - 2024. All rights reserved.