Por que usar o Attach para atualizar o Entity Framework 6?
Ao procurar as melhores práticas para executar a operação CRUD via EF, observei que é altamente recomendável usarAttach()
ouFind()
métodos antes de atualizar uma entidade. Funciona bem e, de acordo com a documentação da EF, esses métodos levam a entidade ao contexto que é bastante claro para mim. Mas o código a seguir me confundiu bastante
public void Update(object entity)
{
Record record = new Record() {
id = 1,
value = 5
};
using (SomeContext ctx = new SomeContext())
{
ctx.Entry(record).State = EntityState.Modified;
ctx.SaveChanges();
}
}
Suponha que tenhamos um registro com id = 1 no banco de dados. Nesta condição, o código acima atualizará o registro (configure o valor para 5). A questão é por que isso funciona? E então por que devo usarAttach()
? Tanto quanto eu entendo, o registro não foi anexado ao contexto de forma alguma. Eu li capítulos relevantes deesta livro eo tutorial mas eles usam abordagem de 2 consultas. Também naveguei SO, mas não encontrei resposta na minha pergunta. Ajude-me com explicações ou algumas boas matérias, por favor.