Middle
O que é rastreamento de alterações (change tracking)?
sobes.tech IA
Resposta da IA
O acompanhamento de alterações é um mecanismo no ORM (Object-Relational Mapper), como o Entity Framework, que rastreia o estado das entidades (objetos) carregadas no contexto de dados. Ele determina quais entidades foram adicionadas, modificadas ou eliminadas, para que ao guardar as alterações na base de dados sejam executados os comandos correspondentes INSERT, UPDATE ou DELETE.
Estados das entidades:
- Added: Objeto recém-criado e adicionado ao contexto, mas ainda não guardado na base de dados.
- Unchanged: Objeto carregado da base de dados ou guardado, sem alterações feitas.
- Modified: Um ou mais atributos do objeto foram modificados após carregá-lo ou guardá-lo.
- Deleted: Objeto marcado para ser eliminado da base de dados.
- Detached: Objeto que não é rastreado pelo contexto de dados.
// Exemplo de rastreamento de alterações no Entity Framework Core
using (var context = new MyDbContext())
{
// Carregar entidade
var myEntity = context.MyEntities.Find(1);
// Ver estado inicial
Console.WriteLine($"Estado inicial: {context.Entry(myEntity).State}"); // Mostrará Unchanged
// Modificar propriedade
myEntity.MyProperty = "Novo Valor";
// Ver estado após modificação
Console.WriteLine($"Estado após modificação: {context.Entry(myEntity).State}"); // Mostrará Modified
// Adicionar uma nova entidade
var newEntity = new MyEntity { MyProperty = "Outra Nova" };
context.MyEntities.Add(newEntity);
// Ver estado da nova entidade
Console.WriteLine($"Estado da nova entidade: {context.Entry(newEntity).State}"); // Mostrará Added
// Marcar entidade para eliminação
context.MyEntities.Remove(myEntity);
// Ver estado após eliminação
Console.WriteLine($"Estado após eliminação: {context.Entry(myEntity).State}"); // Mostrará Deleted
// Guardar alterações na base de dados
context.SaveChanges();
}