我已经很久没有使用DataReaders了(我更喜欢使用ORM)但是我被迫开始工作.我拉回行,检查HasRows是否属实; 此时调试并检查阅读器显示我的数据存在.
现在问题出现了:我打电话的那一刻reader.Read(),试图扩展结果说"枚举没有产生任何结果"或其他什么,我得到"当没有数据存在时无效的读取尝试".错误.如果我不调用Read(),我会得到相同的东西(这是默认情况,因为DataReader在第一个记录之前启动).
我不记得处理这个的正确方法; 当我检查时,数据就在那里HasRows,但是在我打电话之后或之后尝试从中读取数据时,数据就消失了Read,这没有任何意义,好像我不打电话Read,读者应该仍然在第一个记录之前,并且如果设置的属性设置为在第一个记录(SingleRow?我忘记了它的名称)处启动它,那么我应该能够在不调用Read的情况下读取行,但是两种方式似乎都移过包含数据的行.
我忘记了什么?代码相当简单:
TemplateFile file = null;
using (DbDataReader reader = ExecuteDataReaderProc("GetTemplateByID", idParam))
{
if (reader.HasRows) // reader has data at this point - verified with debugger
{
reader.Read(); // loses data at this point if I call Read()
template = new TemplateFile
{
FileName = Convert.ToString(reader["FileName"]) // whether or not I call
// Read, says no data here
};
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21593 次 |
| 最近记录: |