Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Entity Framework:Diesem Befehl ist bereits ein geöffneter DataReader zugeordnet

Es geht nicht darum, die Verbindung zu schließen. EF verwaltet die Verbindung korrekt. Mein Verständnis dieses Problems ist, dass mehrere Datenabrufbefehle auf einer einzelnen Verbindung (oder einem einzelnen Befehl mit mehreren Auswahlen) ausgeführt werden, während der nächste DataReader ausgeführt wird, bevor der erste das Lesen abgeschlossen hat. Die einzige Möglichkeit, die Ausnahme zu vermeiden, besteht darin, mehrere verschachtelte DataReaders zuzulassen =MultipleActiveResultSets einzuschalten. Ein anderes Szenario, in dem dies immer passiert, ist, wenn Sie das Ergebnis der Abfrage (IQueryable) durchlaufen und Lazy Loading für geladene Entitäten innerhalb der Iteration auslösen.