EF6 no tiene propiedad de navegación de carga diferida

Tengo un problema con la carga diferida de EF6. He buscado en StackOverflow, pero las otras preguntas que he encontrado no se ajustan a mi caso.

Estoy usando elvirtual palabra clave y mis clases sonpublic. LazyLoadingEnabled yProxyCreationEnabled ambos están configurados entrue.

Cuando cargo uncourse objeto de la base de datos,presentationId se establece en la correctaid ypresentation esnull lo cual es correcto, porque aún no se ha cargado.

Cuando paso elpresentation propiedad a laPresentationsController.ToDto() método debería ser cargado perezoso, pero obtengo unnull reference excepción dentro del método porque todavía esnull.

Sé que las relaciones están funcionando porque cuando forzo cargar elpresentation propiedad de uncourse en elWatch window con un punto de quiebre en elpublic static CourseDto ToDto(Course item, DnbContext db) método se carga. Ver imagenes:

Como puedes veritem.presentation esnull:

Cuando evalúo manualmentedb.courses.Find(257).presentation que hace referencia a la misma presentación que elitem el objeto sí, ambos están cargados:

Aquí están mis POCO:

public abstract class BaseModel : ISoftDelete {
    public int id { get; set; }
}

public class Course : BaseModel {
    [Required]
    public int presentationId { get; set; }
    public virtual Presentation presentation { get; set; }
}

Mis métodos de controlador de API web:

// GET api/Courses/5
public CourseDto GetCourse(int id) {
    var item = db.courses.FirstOrDefault(x => x.id == id);
    return ToDto(item, db);
}

public static CourseDto ToDto(Course item, DnbContext db) {
    var dto = new CourseDto();

    if (item.presentationId > 0) dto.presentation = PresentationsController.ToDto(item.presentation, db);

    return dto;
}

¿Algunas ideas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta