我正在使用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)>("...")
同样的结果。
任何人有任何提示? 提前谢谢!
答案 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此功能。