2
度も

ストアドプロシージャを列挙することはできません私は受け取る:列挙ストアドプロシージャの結果クエリの結果は、より多くの私が呼んでいる

:System.InvalidOperationException:クエリの結果は 複数回列挙される。

たObjectResultIEnumerableを(ないのIQueryable)を実装するように私は少しsupprisedです。それを動作させるために

var result = context.ListSomething(model.SelectedDatabase).ToList(); 
ViewBag.WebGrid = new WebGrid(source: result, rowsPerPage: int.MaxValue, canSort: false, canPage: false); 

:その例外の背景、なぜ私はToListメソッド()メソッドを呼び出す必要がありますとは何ですか?おそらく、それを説明するドキュメントを私に提供してもらえますか(例えば、Programming Entity Framework, 2nd Editionから、私は今読んでいますが、これまでのメカニズムを説明するものは何も覚えていません)。

おかげで、 パヴェル

答えて

4

ObjectResult<T>は、内部的には、最初にあなたが再びストアドプロシージャを実行して取得する必要がありますToListを呼び出さずに、一度だけ、前方唯一の方法あなたがもう一度、結果を反復処理したい場合に結果を列挙することができますDataReaderにアクセスするためです新しいObjectResult<T>インスタンス。

+0

ああ、私は怠惰な読み込みで似たような例を覚えていると思います。タイプTのオブジェクトがループするときにマテリアライズされたときです...ヒントありがとう。 – dragonfly

関連する問題