C# Dapper是否支持未知数量的结果集? 更新:

C# Dapper是否支持未知数量的结果集? 更新:,c#,ado.net,dapper,C#,Ado.net,Dapper,正如Marc在下面指出的,我的基本问题是:当使用QueryMultiple()调用Read()的次数超过记录集时,会发生什么 我正在将现有的DB调用从使用SqlDataReader转换为Dapper 但是有问题。我称之为存储过程,它可以有条件地再调用1-4个存储过程。所以我可能有很多结果集。 为了简化我的解释,假设我只有1-2个结果集。如果没有调用第一个存储过程,但是调用了第二个存储过程,那么我的第一个Read()调用将占用第一个也是唯一的结果集。然后我有一堆无用的TeamItem对象,它们应

正如Marc在下面指出的,我的基本问题是:当使用QueryMultiple()调用Read()的次数超过记录集时,会发生什么


我正在将现有的DB调用从使用SqlDataReader转换为Dapper

但是有问题。我称之为存储过程,它可以有条件地再调用1-4个存储过程。所以我可能有很多结果集。 为了简化我的解释,假设我只有1-2个结果集。如果没有调用第一个存储过程,但是调用了第二个存储过程,那么我的第一个Read()调用将占用第一个也是唯一的结果集。然后我有一堆无用的TeamItem对象,它们应该是ProjectItem对象。当然,在第二次调用Read()时它会崩溃,因为没有其他结果集

我是否遗漏了一些关于Dapper的信息,或者这是Dapper无法切实支持的极端情况

if (_searchParams.WillSearchTeams)
{
    var teams = multi.Read<TeamItem>().ToList();
}
var projects = multi.Read<ProjectItem>().ToList();
if(_searchParams.WillSearchTeams)
{
var teams=multi.Read().ToList();
}
var projects=multi.Read().ToList();

我假设您已经在使用QueryMultiple;听起来这里的基本问题是,当你调用Read的次数超过网格时会发生什么。我想它可能会返回一个空序列,但我怀疑某种类型的TryRead更可取。不,它目前没有tht,但理论上可以。

是的,我正在使用QueryMultiple。当两个结果集都存在时,它可以正常工作。哦,我想是吧。谢谢您的回答。@user好吧,您希望它做什么不同的事情?@marcGravel在TryRead方法(或返回空序列)上有什么进展吗?我以前从未有过这样的需求,但我正在从事一个可能有多个结果集的项目,我希望避免在每个
Read()
@Gimbl上执行
try{}catch{}
,现在有一个属性指示多读卡器是否已完全使用;这就是你想要的吗
IsConsumed
@Marc您能建议一下实现TryRead的方法吗。当我从同一个查询中获取3个结果时,根据传递的参数,这些结果可以是任意随机序列。