[解決済み】Entity Framework。このコマンドに関連するオープンなDataReaderがすでに存在します。
2022-04-14 09:15:21
質問
Entity Frameworkを使用していますが、時々このエラーが発生します。
EntityCommandExecutionException
{"There is already an open DataReader associated with this Command which must be closed first."}
at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands...
手動で接続管理をしていないにもかかわらず。
このエラーは断続的に発生します。
エラーの引き金となるコード(読みやすくするために短縮しています)。
if (critera.FromDate > x) {
t= _tEntitites.T.Where(predicate).ToList();
}
else {
t= new List<T>(_tEntitites.TA.Where(historicPredicate).ToList());
}
毎回新しい接続を開くために、Disposeパターンを使用しています。
using (_tEntitites = new TEntities(GetEntityConnection())) {
if (critera.FromDate > x) {
t= _tEntitites.T.Where(predicate).ToList();
}
else {
t= new List<T>(_tEntitites.TA.Where(historicPredicate).ToList());
}
}
まだ問題あり
EFは、すでに開いている接続を再利用しないのでしょうか。
解決方法は?
接続を閉じることではありません。EFは接続を正しく管理しています。この問題の私の理解は、1つの接続で複数のデータ検索コマンドが実行され(または複数の選択を伴う単一のコマンド)、最初のものが読み込みを完了する前に次のDataReaderが実行されることである。この例外を回避する唯一の方法は、複数のネストしたDataReaderを許可すること = MultipleActiveResultSetsをオンにすることです。また、クエリの結果(IQueryable)を反復処理する際に、反復処理中に読み込まれたエンティティに対してレイジーローディングを実行する場合にも、この現象が発生することがあります。
関連
-
[解決済み] このコマンドに関連する開いているDataReaderがすでにあり、最初にそれを閉じる必要があります。
-
[解決済み] C# LINQ リスト内の重複を検索する
-
[解決済み] 不変量名 'System.Data.SqlClient' を持つ ADO.NET プロバイダに対応する Entity Framework プロバイダが見つかりませんでした。
-
[解決済み] LINQで複数の "order by "を使用する
-
[解決済み] IEnumerable<T>のforeachのLINQでの等価性
-
[解決済み】Lambda式でOrderBy descending?
-
[解決済み] LINQ-to-SQLとストアドプロシージャの比較?[クローズド]
-
[解決済み] LINQを使用してデータをPivotすることは可能ですか?
-
[解決済み] Linqのgroup byのカウントを持つ
-
[解決済み] LINQ OrderByとThenByの比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み] LINQで複数の "order by "を使用する
-
[解決済み] IEnumerable<T>のforeachのLINQでの等価性
-
[解決済み】Lambda式でOrderBy descending?
-
[解決済み】Entity Framework。このコマンドに関連するオープンなDataReaderがすでに存在します。
-
[解決済み] エンティティフレームワークのLinqクエリInclude()複数の子エンティティ
-
[解決済み] LINQを使用してデータをPivotすることは可能ですか?
-
[解決済み] .Net Core 3.0でIMvcBuilder AddJsonOptionsはどこに行ったのですか?
-
[解決済み] Linqのgroup byのカウントを持つ
-
[解決済み] LINQ: 区分された値