У меня есть модель представления, которая инкапсулирует только некоторые из свойств модели базы данных. Эти свойства, содержащиеся в модели представления, являются единственными свойствами, которые я хочу обновить. Я хочу, чтобы другие свойства сохраняли свою ценность.
Во время моего исследования я нашел этот ответ, который, кажется, идеально подходит для моих потребностей, однако, несмотря на все мои усилия, я не могу заставить код работать так, как ожидалось.
Вот отдельный пример того, что я придумал:
static void Main() {
    // Person with ID 1 already exists in database.
    // 1. Update the Age and Name.
    Person person = new Person();
    person.Id = 1;
    person.Age = 18;
    person.Name = "Alex";
    // 2. Do not update the NI. I want to preserve that value.
    // person.NINumber = "123456";
    Update(person);
}
static void Update(Person updatedPerson) {
    var context = new PersonContext();
    context.Persons.Attach(updatedPerson);
    var entry = context.Entry(updatedPerson);
    entry.Property(e => e.Name).IsModified = true;
    entry.Property(e => e.Age).IsModified = true;
    // Boom! Throws a validation exception saying that the 
    // NI field is required.
    context.SaveChanges();
}
public class PersonContext : DbContext {
    public DbSet<Person> Persons { get; set; }
}
public class Person {
    public int Id { get; set; }
    [Required]
    public string Name { get; set; }
    [Required] 
    public int Age { get; set; } // this is contrived so, yeah.
    [Required]
    public string NINumber { get; set; }
}
Что я делаю неправильно?
