[解決済み] このコマンドに関連する開いているDataReaderがすでにあり、最初にそれを閉じる必要があります。
2022-01-12 11:52:29
質問
コードは次のとおりです。
var accounts = from account in context.Accounts
from guranteer in account.Gurantors
select new AccountsReport
{
CreditRegistryId = account.CreditRegistryId,
AccountNumber = account.AccountNo,
DateOpened = account.DateOpened,
};
return accounts.AsEnumerable()
.Select((account, index) => new AccountsReport()
{
RecordNumber = FormattedRowNumber(account, index + 1),
CreditRegistryId = account.CreditRegistryId,
DateLastUpdated = DateLastUpdated(account.CreditRegistryId, account.AccountNumber),
AccountNumber = FormattedAccountNumber(account.AccountType, account.AccountNumber)
})
.OrderBy(c=>c.FormattedRecordNumber)
.ThenByDescending(c => c.StateChangeDate);
public DateTime DateLastUpdated(long creditorRegistryId, string accountNo)
{
return (from h in context.AccountHistory
where h.CreditorRegistryId == creditorRegistryId && h.AccountNo == accountNo
select h.LastUpdated).Max();
}
実行すると、エラーが発生します。
There is already an open DataReader associated with this Command which must be closed first.
スタックトレースは以下の通りです。
InvalidOperationException: There is already an open DataReader associated with this Command which must be closed first.]
System.Data.SqlClient.SqlInternalConnectionTds.ValidateConnectionForExecute(SqlCommand command) +5008639
System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute(String method, SqlCommand command) +23
System.Data.SqlClient.SqlCommand.ValidateCommand(String method, Boolean async) +144
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +87
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +32
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +141
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +12
System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) +10
System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) +443
[EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details.]
System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) +479
System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute(ObjectContext context, ObjectParameterCollection parameterValues) +683
System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption) +119
System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +38
System.Linq.Enumerable.Single(IEnumerable`1 source) +114
System.Data.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__3(IEnumerable`1 sequence) +4
System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle(IEnumerable`1 query, Expression queryRoot) +29
System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute(Expression expression) +91
System.Data.Entity.Internal.Linq.DbQueryProvider.Execute(Expression expression) +69
System.Linq.Queryable.Max(IQueryable`1 source) +216
CreditRegistry.Repositories.CreditRegistryRepository.DateLastUpdated(Int64 creditorRegistryId, String accountNo) in D:\Freelance Work\SuperExpert\CreditRegistry\CreditRegistry\Repositories\CreditRegistryRepository.cs:1497
CreditRegistry.Repositories.CreditRegistryRepository.<AccountDetails>b__88(AccountsReport account, Int32 index) in D:\Freelance Work\SuperExpert\CreditRegistry\CreditRegistry\Repositories\CreditRegistryRepository.cs:1250
System.Linq.<SelectIterator>d__7`2.MoveNext() +198
System.Linq.Buffer`1..ctor(IEnumerable`1 source) +217
System.Linq.<GetEnumerator>d__0.MoveNext() +96
解決方法は?
これは、別のクエリの結果を反復処理中にクエリを実行した場合に発生する可能性があります。この例は完全ではないので、どこでこの現象が発生するかは不明です。
原因としては、あるクエリの結果を反復処理する際に引き起こされるレイジーローディングが挙げられます。
これは、接続文字列でMARSを許可することで簡単に解決することができます。追加
MultipleActiveResultSets=true
を接続文字列のプロバイダー部分(データソース、初期カタログなどが指定されている部分)に追加します。
関連
-
コマンドによるフォルダの簡単なインクリメンタルバックアップ(win/linux)
-
CSスクリプトの使用方法
-
InstallShield でレジストリキーを取得するスクリプト
-
linux シェル学習ノート 2日目
-
[解決済み】lm.fit(x,y,offset = offset, singular.ok,...) boxcox式で0非NAケースでエラーになる。
-
[解決済み】gitが「変更をコミットするか、マージする前に隠してください」と言うのを解決するにはどうしたらいいですか?
-
[解決済み】「Error: デフォルトのデータセット例mtcarsとggplot2における「離散的なスケールに連続的な値が供給された」。
-
[解決済み】constで変数を初期化しようとすると「initializerの要素が定数でない」というエラーが発生する。
-
[解決済み】拡張メソッドは、一般的でない静的クラスで定義する必要がある
-
[解決済み] タイムアウトが発生しました。操作の完了前にタイムアウトが発生したか、サーバーが応答していない。ステートメントが終了しました
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Swift言語とAppleScriptの違い、AppleScriptの開発状況について教えてください。
-
[解決済み】C++ -- ' の前に一次式があることが予想される。
-
[解決済み】C++ Cout & Cin & System "Ambiguous" [クローズド]。
-
[解決済み】rmarkdownエラー "長さ0の変数名を使おうとした"
-
[解決済み】例外:AAPT2エラー:詳細はログを確認してください。
-
[解決済み】変数が初期化されていないかもしれないエラー
-
[解決済み] 'push_back' の呼び出しに対応するメンバ関数がないエラー
-
[解決済み】 c++ "Incomplete type not allowed" クラス参照情報へのアクセスエラー (前方宣言による円環状依存性)
-
[解決済み] MIPSのフェッチアドレスがワード境界にアライメントされていないため、.align 4を使用したが、まだうまくいかない
-
[解決済み】Nullableオブジェクトは値を持たなければならない?