それがまさに起こっていることですが、私はあなたが考える理由がまったくないと思います。 Linqでの実行が延期されたためではなく、まだロードされていない他のプロパティにアクセスしようとしたときにクエリ結果を繰り返し処理しているため、DataReaderはまだ開いています。 .ToList()
を呼び出すとき 結果は一度に返され、List<TEntity>
に保存されます 一度に1レコードが返されるのではなく、クライアントのメモリに保存されます。
これは、MSSQLServerでMultipleActiveResultSets=true
の設定を使用して回避できます。 接続文字列にありますが、MySQLはこの設定をサポートしていません。ただし、できるはずのことは、.Include("tablename")
を使用して必要な追加データを熱心にロードすることです。
var houses = (from h in db.Houses.Include("Images")
select h).Take(10);