No se trata de cerrar la conexión. EF gestiona la conexión correctamente. Mi comprensión de este problema es que hay múltiples comandos de recuperación de datos ejecutados en una sola conexión (o un solo comando con múltiples selecciones) mientras que el siguiente DataReader se ejecuta antes de que el primero haya completado la lectura. La única forma de evitar la excepción es permitir múltiples DataReaders anidados =activar MultipleActiveResultSets. Otro escenario en el que esto siempre sucede es cuando itera a través del resultado de la consulta (IQueryable) y activará la carga diferida para la entidad cargada dentro de la iteración.