7

SqlDataReaders は、早送り、読み取り専用、一度に 1 行ずつ接続される性質があるため、SqlDataAdapters よりもはるかに高速であり、DataTable オブジェクト (SqlDataAdapter. Fill(データテーブル))。

ただし、あちこちで、「SqlDataAdapter は内部的にデータ リーダーを使用してテーブルを埋めるため、何を使用してもおそらく違いはない」と言及する人がいます。これが本当なら、アダプタが内部データ リーダーを使用してデータベースと通信している場合、アダプタの速度がどのように低下​​するのでしょうか?

いくつかのテストをセットアップして、それぞれのパフォーマンスをプロファイリングできることはわかっていますが、本質的にどちらの方法でも同じプロセスを扱っている場合、誰かがパフォーマンスの不一致の疑いに光を当ててくれることを望んでいます.

テーブルを埋めるだけのデータ アダプターとは異なり、通常はリーダーを使用して厳密に型指定された POCO のリストを作成することを理解しています。ただし、私の質問は厳密には、O/RM の問題ではなく、2 つのパフォーマンスの違いの詳細についてです...

4

1 に答える 1

5

DataReaderを使用している場合は、最初の行を読み取るときにいくつかの情報に反応し、残りの読み取りを無視することもできます。

DataAdapterを使用している場合、同じ情報に反応するには、最初にテーブル全体をロードしてから、最初の行を読み取る必要があります

于 2012-10-30T15:27:33.923 に答える