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

Hug*_*cha 3 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");
Run Code Online (Sandbox Code Playgroud)

它返回0和Guid.Empty的列表.

如果我只使用int或只使用Guid它可以正常工作

我还尝试根据表中的列命名ValueTuple:

await connection.QueryAsync<(int tenant, Guid pid)>("...")
Run Code Online (Sandbox Code Playgroud)

结果相同.

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

Dav*_*rno 5

这是小巧玲珑的已知限制.它不支持将查询结果复制到ValueTuple中.Github上有一个未解决的问题,要求对此提供支持.

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


plh*_*rja 5

Dapper似乎从v.1.50.4开始支持ValueTuple查询映射,尽管David Arno指出的问题仍然存在。我们在项目中已经使用了一段时间。

我也无法在发行说明中找到任何提及的新增支持,但是我设法在Dapper的测试项目中找到了此功能的示例用法