"이미 열린 DataReader가 있습니다 ..."엔터티 프레임 워크의 오류
문제 해결 이 오류는 "이 명령과 먼저 닫아야하는이 명령과 관련된 열린 데이터 레더가 있습니다."일반적으로 다른 쿼리의 결과가 여전히 처리되는 동안 데이터베이스 쿼리를 실행하려고 시도 할 때 발생합니다. 일반적인 시나리오와 그 솔루션을 살펴 보겠습니다.
를 호출하여 새 데이터 리더를 열었습니다. 이 독자들을 닫지 않으면 서 후속 데이터베이스 작업이 실패하여 "Open DataReader"오류로 이어집니다.
: 를 포함하십시오
DateLastUpdated
경고 :
<code class="language-csharp">public DateTime DateLastUpdated(long creditorRegistryId, string accountNo) { return (from h in context.AccountHistory where h.CreditorRegistryId == creditorRegistryId && h.AccountNo == accountNo select h.LastUpdated).Max(); }</code>
LastUpdated
이 단일 쿼리는 , 및 데이터를 검색하여 여러 데이터 리더의 필요성을 제거하고 오류를 해결합니다. 열렬한 로딩은 데이터베이스로의 라운드 트립을 줄임으로써 성능을 향상시킵니다. 특정 엔티티 관계에 맞게 문을 조정해야합니다. 필요한 경우 더 깊은 내비게이션에 <code class="language-csharp">return accounts.AsEnumerable() .Select((account, index) => new AccountsReport() { // ... other properties ... DateLastUpdated = DateLastUpdated(account.CreditRegistryId, account.AccountNumber); // ... other properties ... }) // ... rest of the query ...</code>
.
위 내용은 C# 코드에 '이미 열린 DataReader가 있습니다 ...'오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!