Какую разницу имеет значение .AsNoTracking ()?

У меня есть вопрос относительно.AsNoTracking() расширение, так как это все довольно новое и довольно запутанное.

Я использую контекст для запроса для веб-сайта.

Многие из моих сущностей не меняются, так что их не нужно отслеживать, но у меня есть следующий сценарий, в котором я не уверен, что происходит в базе данных, или даже имеет ли это значение в этом случае.

Этот пример является тем, что я сейчас делаю:

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

Это то же самое, что и выше, но удаление.AsNoTracking() из шага 1:

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

Шаги 1 и 2 используют один и тот же контекст, но происходят в разное время. Что я не могу понять, так это то, есть ли разница. Поскольку Шаг 2 является обновлением, я предполагаю, что оба так или иначе дважды попадут в базу данных.

Может кто-нибудь сказать мне, в чем разница?

Ответы на вопрос(6)

Ваш ответ на вопрос