C# Dapper QueryAsync 到 ValueTuple 映射不正确
C# Dapper QueryAsync to ValueTuple not mapping correctly
我正在使用 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");
它是 returns 0 和 Guid.Empty 的列表。
如果我只使用 int 或只使用 Guid,它工作正常
我还尝试根据 table 中的列命名 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 版本中发布。
Dapper 从 v.1.50.4 开始似乎支持 ValueTuple 查询映射,尽管 David Arno 指出的问题仍然存在。我们在项目中使用此功能已有一段时间了。
我也无法在发行说明中找到任何关于添加支持的提及,但我设法在 Dapper 的测试项目中找到了此功能的 example usage。
我正在使用 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");
它是 returns 0 和 Guid.Empty 的列表。
如果我只使用 int 或只使用 Guid,它工作正常
我还尝试根据 table 中的列命名 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 版本中发布。
Dapper 从 v.1.50.4 开始似乎支持 ValueTuple 查询映射,尽管 David Arno 指出的问题仍然存在。我们在项目中使用此功能已有一段时间了。
我也无法在发行说明中找到任何关于添加支持的提及,但我设法在 Dapper 的测试项目中找到了此功能的 example usage。