Если вы обновляете пользователя, который уже существует, вы уже должны работать с этим пользователем, извлеченным из базы данных. Например, если у вас есть бизнес-правило, согласно которому пользователь может обновить свое имя на странице, вы должны сначала: выбрать пользователя по его идентификатору, выполнить обновление, как вы делаете, а затем сохранить пользователя обратно. Вы также получите выгоду от выполнения проверки объекта, и выборка не займет много времени.
Это не был твой вопрос, но я подумал, что стоит указать (что это нормально и нормально брать из БД). Если вы не хотите извлекать данные из базы данных, я уверен, что вы можете написать специальный запрос, но, возможно, не через Entity Framework. В части 2 я не вижу способа обновить 20 полей, не сообщая EF, что это за 20 полей. Это должно знать, что это собирается обновить на некотором уровне.
Я знаю, что некоторые части этого ответа могут быть неудовлетворительными, но в целом я предлагаю работать со структурой, а не против нее.