Lidando com Updates com EntityFramework

0

Updates com o EntityFramework podem ser algo um pouco “misterioso” quando se não sabe ao exato qual é o processo que o EntityFramework gera isto pode se tornar uma pequena dor de cabeça.

Vamos apresentar dois cenários:

// Retornar objeto do banco de dados
// Alterar o nome
// Marcar o objeto como modificado
//Salvar o objeto inteiro no banco.
using (var ctx = new SchoolDBEntities())
{
    stud = ctx.Students.Where(s => s.StudentName == "Estudante João").FirstOrDefault<Student>();
    stud.StudentName = "Estudante João da Silva";
    ctx.Entry(stud).State = System.Data.Entity.EntityState.Modified;     
    ctx.SaveChanges();
}



// Retornar objeto do banco de dados
// Realizar o attach do objeto
// Alterar o nome
// Marcar o atributo como modificado
//Salvar o objeto no banco, porém indo somente o update do parametro modificado
using (var ctx = new SchoolDBEntities())
{
    stud = ctx.Students.Where(s => s.StudentName == "Estudante João").FirstOrDefault<Student>();
	ctx.Attach(updatedUser);
	stud.StudentName = "Estudante João da Silva";
    ctx.Entry(addressgeo).Property(x => x.StudentName).IsModified = true;
    ctx.SaveChanges();

}

Os dois cenários são parecidos, porém fica claro a importância de se utilizar o comando correto no momento do Update. Imagine um objeto que possua muitos atributos e você ficar dando update em todos os campos todas as vezes que algum campo é modificado? Isto iria atrapalhar muito a performance, sem contar em updates acidentais com campos calculados por exemplo.

Um grande abraço pessoal!

Compartilhe.

Sobre o autor

Criador do blog Código Simples e com mais 9 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist. Atuando em funções analista, desenvolvedor, arquiteto, líder técnico e gestor de equipes. Mais informações em : http://jhonathansoares.com