我正在使用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)>("...")
结果相同。
有人有任何提示吗?提前致谢!
这是小巧玲珑的已知限制。它不支持将查询结果复制到ValueTuple中。 There is an open issue on Github requesting support for this。
该请求的OP创建了一个如何在4月完成的工作示例,目前计划在v2.0发布。
Dapper似乎支持自v.1.50.4以来的ValueTuple查询映射,尽管David Arno指出的问题仍然是开放的。我们在项目中已经使用了这个功能一段时间了。
我也无法在发行说明中找到任何增加支持的提及,但我设法在Dapper的测试项目中找到了这个功能的example usage。