Dapper是否支持未知数量的结果集?

Mik*_*aas 6 c# ado.net dapper

更新:

正如Marc在下面提到的,我的基本问题是:当使用QueryMultiple()时,当Read()被调用的次数多于记录集时会发生什么?


我正在努力将现有的数据库调用从使用SqlDataReader转换为Dapper.

虽然有问题.我称之为sproc,有条件地可以调用1-4个sprocs.所以我可能有很多结果集.为了简化我的解释,我们假设我只有1-2个结果集.如果第一个sproc没有被调用,但第二个sproc被调用,那么我的第一个Read()调用会占用第一个和唯一的结果集.然后我有一堆无用的TeamItem对象,它们应该是ProjectItem对象.然后它会在第二次调用Read()时爆炸,因为没有其他结果集.

我是否遗漏了关于Dapper的事情,或者这是Dapper无法支持的极端情况?

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

Mar*_*ell 4

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

  • @Gimbl 现在有一个属性指示多阅读器是否已完全消耗;那是你要的吗?`已消耗` (3认同)