我怎么能做一个批量选择在Dapper

本文关键字:选择 Dapper 一个 怎么能 | 更新日期: 2023-09-27 18:15:37

我有一个包含两列的复合主键的表。在Dapper . net中,我通过传入我的select语句以及参数数组来使用. query。我发现dapper在SELECT语句中只期望一个参数对象,不像INSERT和UPDATE语句中的Execute,我可以这样做:

var batchParams = new List<object>();
batchParams.add(new 
    {
    ID = 50,
    Lang = 40
    });
batchParams.add(new 
    {
    ID = 20,
    Lang = 31
    });

然后我可以把这个数组传递给我的execute调用。实际上,我想运行多个选择语句(每个语句将检索一行),然后将结果作为结果数组返回。这在纸面上可能吗?

我怎么能做一个批量选择在Dapper

它不是内置的,但是您可以添加一个扩展方法,做类似的事情:

foreach(var val in input)
    foreach(var row in conn.Query<T>(sql, val))
        yield return row;

这也可以通过LINQ-to-Objects中的SelectMany实现:

var  combined = batch.SeletMany(x => conn.Query<T>(sql, x));