1

私はいくつかのフィールドを持つクラス Employee を持っています:

EmployeeID、FirstName、LastName、Age、Rank

そして、データベースからすべての従業員を取得し、ComboBox に名前を出力したいので、本当に必要なのは次のとおりです。

EmployeeID、FirstName、LastName

私の質問は次のとおりです。クラスのすべてのフィールドを埋めるために、db から常にすべてのフィールドを取得する必要がありますか?

PS。少し前に、私は実際には答えられていない質問をしました: クラスには、辞書テーブルからの SQL JOIN からの値の文字列フィールドが必要 です。ありがとう。

4

6 に答える 6

3

率直な答えは、「いいえ、必要なフィールドのみを取得する必要があります」です。

ただし、常にトレードオフがあります。同じテーブルの異なるビューに対して、多かれ少なかれ重複するコードを使用する必要があります。データをフェッチする頻度、行数、フィールドのサイズによって異なります。

于 2013-10-22T21:54:42.740 に答える
1

実装したアーキテクチャに関して契約上同意した内容を検討する必要があります。説明させてください...

データ転送メカニズムとして何を使用しているかによって異なります。

ADO データ テーブルを使用している場合は、必要なものを取得するだけです。コンシューマはデータ テーブルを期待しており、期待する列が存在することをテストする必要があります。これは契約上適切ではないことに注意してください。列が見落とされ、実行時エラーが発生する可能性があります。列が入れ替わる可能性があり、実行時エラーが発生する可能性があります。

ただし、データ オブジェクトを埋める場合は、すべてを取得する必要があります。これは、そのオブジェクトのコンシューマーに、そのデータ オブジェクトにある必要があるすべてのデータを提供することに契約上同意したためです。もちろん、これは、データ オブジェクトの設計を考慮する必要があることを意味します。データ テーブルやデータの抽出元のビューをミラーリングするだけではいけません。データ ソースの幅が 80 列で、そのデータ ソースを再構築できない場合は、データ オブジェクトの軽量バージョンと重量バージョンを用意することを検討し、必要な場合にのみ重量バージョンを使用する必要があります。

また、一度に取得する行の量も考慮する必要があります。非常に選択的ですか、それとも決して使用しない行を含むすべてを取得していますか?

于 2013-10-22T22:05:08.413 に答える
1

私の意見 このクラスの従業員データを使用するのはこれだけで、テーブルのすべての値を必要としない場合は、パフォーマンスが必要なフィールドのみをクラスに選択させるだけでよい場合は、2 つの方法があります。より高速ですが、プログラムの他の場所でこれらの値を使用する場合は、必要な値を取得するために後で変更または新しい値を作成する必要があるため、すべての値を選択します。個人的には、1 つのクラスで 2 つのジョブ評価を行い、次に 2 つのクラスを行うのが好きです。

于 2013-10-22T22:02:28.040 に答える