0

cshtmlにいくつかのコードがあります:

@model IEnumerable<Floor>
@{
    var floors = Model
}

そして、私はこの行にエラーがあります:

@foreach(floor_l.ShopFloorsのvar shopfloor)

モデルの割り当て後に.ToList()を使用して回避策を得ることができます。

エラーの原因は何でしょうか?誰が直面しましたか?

このエラーは散発的に発生します。

4

3 に答える 3

1

各データベース接続は、一度に1つのデータリーダーのみをサポートできます。Modelfoor_lは同じ接続を使用しているため、同時に読み取ることができるのはそのうちの1つだけです。

追加.ToList()すると、データリーダーからすべてのレコードがリストに読み込まれ、データリーダーが閉じます。これにより、接続は次のデータリーダーで自由に使用できるようになります。

于 2012-06-18T12:18:52.400 に答える
1

遅延読み込みに注意してください。これが有効になっている場合、たとえばループで何かを実行していると、このエラーが発生する可能性があります。

これを回避する1つの方法は、遅延読み込みをオフにしたくない場合(および、必要に応じて再度オンにすることを忘れないでください)、熱心な読み込みを使用することです。これは、Include()ステートメントをクエリ。たとえば、に呼び出されたエンティティとエンティティContactのコレクションへの参照があり、クエリしているのを取得したい場合は、これをLINQクエリで使用しますAddressContactAddressesContacts

.Include("Addresses")

これにより、生成されたクエリを介してAddressesロードされたそれぞれのがロードされます。ただし、パフォーマンスが低下する可能性があるため、積極的な読み込みを使用する各クエリでは慎重にContact使用してください。Include()

于 2013-05-13T18:04:36.340 に答える
0

"MultipleActiveResultSets=True"connectionStringで

于 2012-06-18T12:58:42.250 に答える