EF: Incluir con la cláusula where

Como sugiere el título, estoy buscando una manera de hacer una cláusula where en combinación con una inclusión.

Estas son mis situaciones: soy responsable del soporte de una gran aplicación llena de olores de código. Cambiar demasiado código causa errores en todas partes, así que estoy buscando la solución más segura.

Digamos que tengo un objeto Bus y un objeto People (Bus tiene un prop de navegación Colección de personas). En mi consulta necesito seleccionar todos los autobuses con solo los pasajeros que están despiertos. Este es un ejemplo ficticio simplista.

En el código actual:

var busses = Context.Busses.Where(b=>b.IsDriving == true);
foreach(var bus in busses)
{
   var passengers = Context.People.Where(p=>p.BusId == bus.Id && p.Awake == true);
   foreach(var person in passengers)
   {
       bus.Passengers.Add(person);
   }
}

Después de este código, el contexto se elimina y, en el método de llamada, las entidades de bus resultantes se asignan a una clase DTO (100% copia de la entidad).

Este código causa múltiples llamadas a DB, que es un No-Go, así que encontré esta soluciónEn los blogs de MSDN

Esto funcionó muy bien al depurar el resultado, pero cuando las entidades se asignan a la DTO (mediante el uso de AutoMapper) obtengo una excepción de que el contexto / conexión se ha cerrado y que el objeto no se puede cargar. (El contexto siempre está cerrado no puede cambiar esto :()

Así que necesito asegurarme de que los Pasajeros seleccionados ya estén cargados (IsLoaded en la propiedad de navegación también es Falso). Si inspecciono la colección de Pasajeros, el Conde también lanza la Excepción pero también hay una colección en la Colección de Pasajeros llamada "entidades relacionadas envueltas" que contienen mis objetos filtrados.

¿Hay una manera de cargar estas entidades relacionadas envueltas en toda la colección? (No puedo cambiar la configuración de mapeo de automapper porque se usa en toda la aplicación).

¿Hay otra manera de conseguir los pasajeros activos?

Cualquier sugerencia es bienvenida ...

Editar

La respuesta de Gert Arnold no funciona porque los datos no se cargan con entusiasmo. Pero cuando lo simplifico y borro el lugar donde se carga. Esto es realmente extraño ya que el sql de ejecución devuelve a todos los pasajeros en ambos casos. Por lo tanto, debe haber un problema al volver a colocar los resultados en la entidad.

Context.Configuration.LazyLoadingEnabled = false;
var buses = Context.Busses.Where(b => b.IsDriving)
        .Select(b => new 
                     { 
                         b,
                         Passengers = b.Passengers
                     })
        .ToList()
        .Select(x => x.b)
        .ToList();
Edit2

Después de mucha lucha la respuesta de Gert Arnold funciona! Como Gert Arnold sugirió que necesita desactivar la carga perezosa y mantenerlo apagado. Esto pedirá algunos cambios adicionales a la aplicación ya que el desarrollador anterior amaba la carga diferida -_-

Respuestas a la pregunta(2)

Su respuesta a la pregunta