Nie chodzi o zamknięcie połączenia. EF prawidłowo zarządza połączeniem. Rozumiem ten problem, że istnieje wiele poleceń pobierania danych wykonywanych na pojedynczym połączeniu (lub pojedynczym poleceniu z wieloma wyborami), podczas gdy następny DataReader jest wykonywany przed zakończeniem odczytu. Jedynym sposobem na uniknięcie wyjątku jest zezwolenie na wiele zagnieżdżonych DataReaders =włączenie MultipleActiveResultSets. Innym scenariuszem, w którym zawsze tak się dzieje, jest iteracja przez wynik zapytania (IQueryable) i wyzwolenie leniwego ładowania dla załadowanej encji wewnątrz iteracji.