protected void Update(Curso entity) { using (var context = new AcademiaContext()) { if (isRepeated(entity)) { throw new Exception("Repeated entity"); } entity.Materia.Plan = null; var local = context.Set <Materia>() .Local .FirstOrDefault(f => f.ID == entity.Materia.ID); if (local != null) { context.Entry(local).State = EntityState.Detached; } context.Entry(entity.Materia).State = System.Data.Entity.EntityState.Unchanged; entity = context.Curso.Attach(entity); entity.Comision = context.Comision.Attach(entity.Comision); entity.Materia = context.Materia.Attach(entity.Materia); var entry = context.Entry(entity); // Gets the entry for entity inside context entry.State = EntityState.Modified; context.SaveChanges(); } }