Sobes.tech
Junior — Middle

Quais são as diferenças entre os métodos ATTACH e UPDATE no contexto de trabalhar com objetos ou registros?

sobes.tech IA

Resposta da IA

No contexto do trabalho com objetos ou registos (por exemplo, no Entity Framework ou outros ORM), os métodos ATTACH e UPDATE têm propósitos diferentes:

  • ATTACH: é usado para anexar um objeto ao contexto sem alterar o seu estado. Isto significa que o objeto é considerado existente na base de dados, e ao guardar alterações, o contexto não tentará inseri-lo ou atualizá-lo, a menos que as suas propriedades tenham sido explicitamente modificadas.

  • UPDATE: marca o objeto como modificado (Modified), o que significa que ao guardar o contexto, será realizada uma operação de atualização na base de dados.

Exemplo:

var entity = new Entity { Id = 1, Name = "New Name" };
context.Attach(entity); // o objeto agora é rastreado, mas sem alterações

context.Entry(entity).State = EntityState.Modified; // marcamos como modificado
context.SaveChanges(); // será executada uma atualização na base de dados

Assim, ATTACH simplesmente começa a rastrear o objeto, enquanto que UPDATE (ou definir o estado como Modified) indica que o objeto deve ser atualizado na base de dados.