cshtmlにいくつかのコードがあります:
@model IEnumerable<Floor>
@{
var floors = Model
}
そして、私はこの行にエラーがあります:
@foreach(floor_l.ShopFloorsのvar shopfloor)
モデルの割り当て後に.ToList()を使用して回避策を得ることができます。
エラーの原因は何でしょうか?誰が直面しましたか?
このエラーは散発的に発生します。
cshtmlにいくつかのコードがあります:
@model IEnumerable<Floor>
@{
var floors = Model
}
そして、私はこの行にエラーがあります:
@foreach(floor_l.ShopFloorsのvar shopfloor)
モデルの割り当て後に.ToList()を使用して回避策を得ることができます。
エラーの原因は何でしょうか?誰が直面しましたか?
このエラーは散発的に発生します。
各データベース接続は、一度に1つのデータリーダーのみをサポートできます。Model
とfoor_l
は同じ接続を使用しているため、同時に読み取ることができるのはそのうちの1つだけです。
追加.ToList()
すると、データリーダーからすべてのレコードがリストに読み込まれ、データリーダーが閉じます。これにより、接続は次のデータリーダーで自由に使用できるようになります。
遅延読み込みに注意してください。これが有効になっている場合、たとえばループで何かを実行していると、このエラーが発生する可能性があります。
これを回避する1つの方法は、遅延読み込みをオフにしたくない場合(および、必要に応じて再度オンにすることを忘れないでください)、熱心な読み込みを使用することです。これは、Include()
ステートメントをクエリ。たとえば、に呼び出されたエンティティとエンティティContact
のコレクションへの参照があり、クエリしているのを取得したい場合は、これをLINQクエリで使用しますAddress
Contact
Addresses
Contacts
.Include("Addresses")
これにより、生成されたクエリを介してAddresses
ロードされたそれぞれのがロードされます。ただし、パフォーマンスが低下する可能性があるため、積極的な読み込みを使用する各クエリでは慎重にContact
使用してください。Include()
"MultipleActiveResultSets=True"
connectionStringで