私はSqlDataReaderを使用してWinformアプリケーションでエンティティを設定しています。エンティティクラスには、データベースにいくつかの外部キー属性があり、エンティティクラスのプロパティとして設定します。各プロパティのタイプは「属性」でIDは& Descriptionプロパティです。複数のSQlCommand.ExecuteReaderを呼び出すか、datareader.NextResult()を使用して1回呼び出しますか?
システムのユーザーの中にはデータベースから遠いものがあるため、データアクセスのパフォーマンスが重視されます。
単一の結果セットを返すストアドプロシージャに対してSqlCommand.ExecuteReaderを複数回(属性ごとに1回)実行するか、複数の結果セットを返して使用するストアドプロシージャに対してSqlCommand.ExecuteReaderを一度実行できますSqlDataReader.NextResultを実行して属性を設定します。
私が.NextResultでループすると、ストアドプロシージャとプロパティ割り当てのループが整列されていることを確認する際に問題が発生します。 procのSELECTステートメントの順序が変更された場合、winformアプリケーションの割り当て順序が乱れてしまいます。
とにかくSqlDataReaderが読み込みごとにデータベースに戻った場合、SqlCommand.ExecuteReaderを実行すると時間がかかりますか?各属性に対してExecuteReaderを実行すると、代入側でより明確になります。
ありがとうございます!
私は不思議です:DataAdapterを使用するDataSetを使用するのは、DataReaderを使用するよりも「パフォーマンスが良い」ものでしょうか? DataAdapterはDataReaderを使用しているので、私は神秘的な魔法によってDataAdapterでは高速に実行されますが、ユーザーの終了コードでは実行されないと思っています。 –
正直なところ、私は確かではありませんが、ADO.Netプロバイダのコードでデータセットをデータで埋めるのは最適化されている可能性があります(おそらくC++ /アセンブリで記述されています?)を使用してデータベースを切断し、データウェアハウスを使用する場合は、std CLRフレームワーククラスの呼び出しを使用して、このコードを自分で記述しなければなりません。 ... –
複数のDB接続を作成する可能性のあるアプリケーションでは、スケーラビリティに何が影響するのかは接続の機能ではなく、どれくらい開いているかです。 –