Jaka jest różnica .AsNoTracking ()?

Mam pytanie dotyczące.AsNoTracking() rozszerzenie, ponieważ jest to całkiem nowe i dość mylące.

Używam kontekstu dla żądania dla strony internetowej.

Wiele moich podmiotów nie zmienia się, więc nie trzeba ich śledzić, ale mam następujący scenariusz, w którym nie jestem pewien, co dzieje się w bazie danych, a nawet czy ma to znaczenie w tym przypadku.

Ten przykład jest tym, co aktualnie robię:

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

To jest takie samo jak powyżej, ale usunięcie.AsNoTracking() od kroku 1:

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

Kroki 1 i 2 używają tego samego kontekstu, ale występują w różnych momentach. Nie potrafię się zorientować, czy jest jakaś różnica. Ponieważ Krok 2 jest aktualizacją, domyślam się, że oba trafią do bazy danych dwa razy.

Czy ktoś może mi powiedzieć, jaka jest różnica?

questionAnswers(6)

yourAnswerToTheQuestion