I certainly get nervous when I read this. There is a risk that the user will hold locks on the rows that then could block writes unless the database is in read_committed_shapshot.
Also, I can't say that I find this a very modern design. I would rather read all rows into to memory once. If the dataset is large, let's say thousands of rows, I would consider paging.