Considera este código:
var alumno = new Alumno();
alumno.Nombre = "Juan Luna";
context.Alumnos.Add(alumno);
//No vamos a usar "context.SaveChanges" en este ejemplo
var buscarAlumno = context.Alumnos.SingleOrDefault(a => a.Nombre == "Juan Luna");
Como no guardamos el registro, entonces “buscarAlumno” será nula porque no se encontró el alumno “Juan Luna”.
Esto puede parecer confuso porque lo acababamos de insertar, pero en nuestro código la búsqueda está yendo a buscar el registro en la base de datos, y como no hemos utilizado “SaveChanges” entonces el registro está en memoria, pero no en la base de datos.
Si quieres buscar el registro localmente, cambia la línea donde buscas al alumno por la siguiente, agregando “Local”:
var buscarAlumno = context.Alumnos.Local.SingleOrDefault(a => a.Nombre == "Juan Luna");
Listo, ahora sí se encontrará al alumno.
Esto suele ser útil cuando estás guardando muchos registros de golpe en un ciclo antes de ejecutar “SaveChanges” al final.