如何在 Dapper 中进行批量选择?

3

我有一个包含两列的复合主键的表。在Dapper .NET中,我使用.Query方法来传递我的select语句和参数数组。我发现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 调用。基本上,我想运行多个 select 语句(每个语句将检索一行),然后将结果作为结果数组返回。在 dapper 中是否可能实现这一点?

1个回答

3

这并不是内置的功能,但你可以添加一个扩展方法来实现类似以下的操作:

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));

好的且简单的解决方案 - Mrinal Kamboj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接