SqlDataReader "Enumeration yielded no results"

4

我一直在尝试弄清楚,但是我无法做到。

我通过SqlCommand执行存储过程,并返回SqlDatareader对象,但返回的结果不正确,然而,如果我在调试器中查看该对象,我可以看到正确的结果。这里是我所说的内容的图像:

See the "Result view" row

在“结果视图”行中,显示“枚举未产生结果”,但在路径中: base -> base -> ResultView -> [0] -> 非公共成员 -> _values -> [0],1,[2],[3] 显示了结果。
有人知道如何获取它们吗?
这是我用来获取特定列的代码:
if (dataReader.Read())
{
   ProjectFolderId = dataReader["ItemID"].ToString();
}

但是if返回false。

有相同的问题。有解决方案吗? - Chintan
1个回答

10

请注意:一位读者只能被使用一次。如果在预览窗口中看到数据,很可能您已经在调试器中意外使用了该数据,并且该数据现在不再可用。

确保该数据在调试器预览窗口中不可见/展开,然后再试一次。

_values 只是上次成功读取的最后一行的遗留物/旧版本。


我该如何使它们不可见?顺便说一下,我在没有存储过程的情况下执行了查询(直接在CommandText属性中执行然后ExecuteSelect),现在它可以工作了。我认为使用存储过程的过程中有些奇怪的问题,你觉得呢? - eliashdezr
@equasar 我怀疑这与存储过程无关 - 除了设置命令类型之外,API 是相同的;通常,您需要选择性地单击以展开枚举,因为 IDE 知道许多枚举是不可重复的。您可能点击展开了它吗? - Marc Gravell
你太棒了,@MarcGravell。我简直不敢相信调试器会消耗数据。 - Brendan L

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