0

コントローラーには、EF エンティティの IEnumerable を返すいくつかのアクションがあります。

これらのアクションメソッドが代わりにリストを返すようにすることを考えていました (ビューに戻す前に model.ToList() を呼び出すだけです)。

やろうと思った理由は以下の2つです。

  • まず、BaseController クラス (onactionexecuted/onactionexecuting) の各アクション メソッドのパフォーマンスを測定しています。IEnumerable を返すと、クエリは onactionexecuted メソッドの後まで実行されません。
  • 次に、OnActionExecuted 内の「サービス レイヤー」で使用される接続を破棄することを計画していましたが、そこで破棄すると、モデルが取得されないためにビューが失敗します。

私の質問は、これを行うことの欠点はありますか? すべての IEnumerable Model が完全にトラバースされると確信しているため、使用されないデータを取得するのに問題はありません。

ご協力いただきありがとうございます。

4

1 に答える 1

2

これは、IMO を行うのに完全に有効なことです。あなたはすでに長所と短所をほとんど指摘しています。主な違いは、.ToList がすべて一度にメモリにロードされるのに対し、もう 1 つはオンデマンドのロードが可能であることです。

とにかく列挙全体をロードすることを計画している場合は、.ToList を呼び出すと、一度に 1 つずつではなく 1 つのグラブですべてを要求することで、帯域幅を節約できます。したがって、これがどちらかといえば、とにかくより良い方法かもしれません。

于 2012-04-25T16:09:31.083 に答える