0

私はMVCにはかなり慣れていませんが、原則は理解しています。

その原則に宗教的に固執すると、パフォーマンスの問題が発生するのではないかと心配しています。

たとえば、表示する必要があるデータのみをビューに送信するには、次のことを行う必要があります。

  • DBからデータを取得する
  • モデルビルダーでは、データセットを行ごとにループし、フィールドをフォーマットしてビューモデルに配置します
  • これをビューに送信し、データセットを行ごとにループして表示する必要があります。

ほとんどの場合、データにはそれほど多くの行はありませんが、私が懸念しているのは、データセットを 2 回ループするというこの要件です。ループ操作は本質的に遅いですか? それを2回繰り返すのはおかしいですか?

ループを繰り返すよりも、ビューに書式を設定することで妥協したいと思います。

これはベストプラクティスですか?現代のシステムでは、このループの繰り返しは無視できるほど重要ではないのでしょうか?

4

2 に答える 2

2

最新のシステムでは、このループの繰り返しは無視できるほど重要ではありません。

ほとんどの場合、これが当てはまります。

O(n)ではループの反復は実行されません。それらは本質的に遅いわけではありません(あなたがたくさん持っていないと仮定すると、私はたくさんのレコードを意味します)。ダブルループを使用してコードを記述し、それがどれほど遅いかをテストします。これはおそらくマイクロ最適化であり、他の場所ではコードの効率が低下します。

于 2013-01-14T14:11:18.157 に答える
0

最初のポイントとして、LINQクエリを発行してデータを取得できます。これが最も簡単な方法です。

2番目のポイントには、AutoMapperを使用できます。DBから返された行をViewModelクラスのインスタンスに自動的にマッピングします。リストや配列などのコレクション/列挙型をマップできます。

List<ViewModel>3番目のポイントでは、AutoMapperによって返されたものをグリッドのようなWebGridに渡すことができます。ビューにデータを表示しながら、データをページングしたり(DBからすべての行を取得するのではなく、そのページに必要な量だけを返す)、データを並べ替えたりすることができます。

このワークフローを使用すると、さまざまな場所でデータをループする必要がなくなります。AutoMapperを使用しているとき、およびWebGridが渡された行を処理するとき、ループ操作は引き続き存在します。彼らはあなたから隠されているだけです。これはあなたを良くします。:)ループはこの種のワークフローに固有のものですが、必要なデータ(ページングされたデータ)のみを返す場合、ユーザーエクスペリエンスにペナルティを課すことはありません。

于 2013-01-14T14:13:19.927 に答える