Sobes.tech
Middle

O que é o tracking no Entity Framework?

sobes.tech IA

Resposta da IA

O acompanhamento (Entity Tracking) é um mecanismo no Entity Framework Core que monitora as alterações feitas nos objetos de entidade carregados do banco de dados. O contexto armazena informações sobre o estado de cada entidade carregada e pode gerar consultas SQL para atualizar o banco de dados ao salvar as alterações (DbContext.SaveChanges()).

Principais estados das entidades:

  • Added: A entidade foi adicionada ao contexto, mas ainda não existe no banco de dados.
  • Unchanged: A entidade foi carregada do banco de dados e suas propriedades não foram modificadas.
  • Modified: Algumas propriedades da entidade foram modificadas desde seu carregamento do banco de dados.
  • Deleted: A entidade foi marcada para exclusão do banco de dados.
  • Detached: A entidade não está sendo rastreada pelo contexto.

Por padrão, as entidades são rastreadas ao trabalhar com consultas LINQ. Isso permite que o Entity Framework determine automaticamente quais alterações precisam ser salvas.

Exemplo de indicação explícita de rastreamento:

// Consulta rastreada
var trackedUser = context.Users.FirstOrDefault(u => u.Id == 1);

// Consulta não rastreada
var untrackedUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == 2);

Desativar o rastreamento com AsNoTracking() pode melhorar o desempenho ao executar consultas, se você não precisar salvar alterações no banco de dados, pois o EF não gasta recursos rastreando o estado das entidades.