7

我一直在读到 SqlDataReaders 比 SqlDataAdapters 快得多,因为它们具有快进、只读、一次一行连接的特性,并且在填充 DataTable 对象(SqlDataAdapter.填充(数据表))。

然而,到处有人会提到“它可能不会影响你使用什么,因为 SqlDataAdapter 在内部使用数据读取器来填充它的表。” 如果这是真的,那么如果适配器通过使用内部数据读取器与数据库进行通信,它到底怎么会慢这么多呢?

我知道我可以设置一些测试并分析每个测试的性能,但我真正希望有人能够阐明所谓的性能差异,如果我们基本上以任何一种方式处理相同的过程。

我知道您通常会使用阅读器来创建强类型 POCO 列表,这与仅填充表格的数据适配器不同。但是,我的问题完全是关于两者之间性能差异的细节,而不是 O/RM 问题......

4

1 回答 1

5

如果您使用的是 DataReader,您可以在读取第一行时对某些信息做出反应,甚至可以忽略其余的读数。

如果您使用的是 DataAdapter,则必须首先加载整个表,然后读取第一行才能对相同的信息做出反应。

于 2012-10-30T15:27:33.923 回答