Entity Framework 6.1 Aktualisieren einer Teilmenge eines Datensatzes

Ich habe ein Ansichtsmodell, das nur kapseltetwas der Datenbankmodelleigenschaften. Diese im Ansichtsmodell enthaltenen Eigenschaften sind die einzigen Eigenschaften, die ich aktualisieren möchte. Ich möchte, dass die anderen Eigenschaften ihren Wert behalten.

Während meiner Recherche habe ich gefundendiese Die Antwort scheint perfekt für meine Bedürfnisse zu sein. Trotz aller Bemühungen kann ich den Code nicht zum erwarteten Funktionieren bringen.

Hier ist ein Beispiel dafür, was ich mir ausgedacht habe:

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; }
}

Was mache ich falsch?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage