Que diferença faz o .AsNoTracking ()?
Eu tenho uma pergunta sobre o.AsNoTracking()
extensão, como isso é tudo muito novo e bastante confuso.
Estou usando um contexto por solicitação para um website.
Muitas das minhas entidades não mudam, portanto, não precisam ser rastreadas, mas tenho o seguinte cenário em que não tenho certeza do que está acontecendo com o banco de dados ou mesmo se isso faz diferença nesse caso.
Este exemplo é o que estou fazendo atualmente:
context.Set<User>().AsNoTracking()
// Step 1) Get user
context.Set<User>()
// Step 2) Update user
Isto é o mesmo que acima, mas removendo o.AsNoTracking()
da etapa 1:
context.Set<User>();
// Step 1) Get user
context.Set<User>()
// Step 2) Update user
As Etapas 1 e 2 usam o mesmo contexto, mas ocorrem em momentos diferentes. O que não consigo descobrir é se existe alguma diferença. Como o Passo 2 é uma atualização, acredito que ambos irão acessar o banco de dados duas vezes.
Alguém pode me dizer qual é a diferença?