6

更新:

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


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

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

我是否遗漏了有关 Dapper 的某些内容,或者这是 Dapper 无法切实支持的极端情况?

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

1 回答 1

4

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

于 2013-01-26T08:55:01.940 回答