我一直读到 SqlDataReaders 比 SqlDataAdapters 快得多,因为它们具有快进、只读、一次一行连接的特性,而且在填充 DataTable 对象时它们比 SqlDataAdapters 特别快(SqlDataAdapter.Fill(dataTable)).
但是,有时会有人提到“使用什么可能不会有什么不同,因为 SqlDataAdapter 在内部使用数据读取器来填充它的表。”如果这是真的,那么如果适配器通过使用内部数据读取器与数据库通信,那么它究竟是如何慢得多的呢?
我知道我可以设置一些测试并分析每个测试的性能,但我真正想要的是,如果我们基本上以任何一种方式处理相同的过程,有人可以阐明所谓的性能差异.
我知道您通常会使用读取器来创建强类型 POCO 列表,这与仅填充表格的数据适配器不同。但是,我的问题严格来说是关于两者之间性能差异的细节,而不是 O/RM 问题......
最佳答案
如果您使用的是 DataReader,您可以在阅读第一行时对某些信息使用react,甚至可以忽略阅读的其余部分。
如果您使用的是 DataAdapter,则必须先加载整个表,然后读取第一行以便对相同的信息使用react。
关于c# - 如果 SqlDataAdapter 在内部使用数据读取器,为什么人们说使用 SqlDataReader 更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13142070/