¿Qué diferencia hace .AsNoTracking ()?

Tengo una pregunta sobre el.AsNoTracking() extensión, ya que todo esto es bastante nuevo y bastante confuso.

Estoy usando un contexto por solicitud para un sitio web.

Muchas de mis entidades no cambian, por lo que no es necesario realizar un seguimiento, pero tengo el siguiente escenario en el que no estoy seguro de lo que va a ir a la base de datos, o incluso si hay una diferencia en este caso.

Este ejemplo es lo que estoy haciendo actualmente:

context.Set<User>().AsNoTracking()
// Step 1) Get user
context.Set<User>()
// Step 2) Update user

Este es el mismo que el anterior pero eliminando el.AsNoTracking() del paso 1:

context.Set<User>();
// Step 1) Get user
context.Set<User>()
// Step 2) Update user

Los Pasos 1 y 2 usan el mismo contexto pero ocurren en diferentes momentos. Lo que no puedo averiguar es si hay alguna diferencia. Como el Paso 2 es una actualización, supongo que ambos llegarán a la base de datos dos veces de todos modos.

¿Alguien puede decirme cuál es la diferencia?

Respuestas a la pregunta(6)

Su respuesta a la pregunta