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.