我多年没有使用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
};
}
}
答案 0 :(得分:10)
答案 1 :(得分:0)