【发布时间】:2011-12-06 00:05:11
【问题描述】:
IDataReader 接口继承自 IDataRecord。 Read() 方法更改阅读器的状态,以便您可以检索字段:
var reader = new SomeIDataReader();
while (reader.Read()) {
var firstField = reader[0];
}
IDataReader 包含读取器和记录。在我看来,这在一个类中混合了两个问题。我会返回一个记录对象,并像这样使用它:
var reader = new MyDataReader();
do {
var record = reader.Read();
if (record == null) break;
var firstField = record[0];
} while (true);
这将数据读取器和数据容器的关注点分开,并且可以使用两个线程从同一源读取。
我的解决方案更好吗?让读者包含结果有哪些好处?为什么有人会选择 IDataReader 方法?
【问题讨论】:
-
我能想到的唯一原因是它可以避免为每次读取的记录创建一个新对象(如果处理非常大的记录集,这是一个加号)。
标签: c# .net oop design-patterns sqldatareader