У меня вопрос по расширению .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 - это обновление, я предполагаю, что оба в любом случае попадут в базу данных дважды.
Может кто подскажет, в чем разница?