C#Dapper QueryAsync to ValueTuple未正确映射

时间:2017-08-08 08:07:01

标签: 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)>("...")

同样的结果。

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:4)

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

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