Ich habe ein Ansichtsmodell, das nur einige der Datenbankmodelleigenschaften einkapselt. Diese vom Ansichtsmodell enthaltenen Eigenschaften sind die einzigen Eigenschaften, die ich aktualisieren möchte. Ich möchte, dass die anderen Eigenschaften ihren Wert erhalten.Entity Framework 6.1 Aktualisierung einer Teilmenge eines Datensatzes
Während meiner Recherchen fand ich this Antwort, die für meine Bedürfnisse jedoch perfekt scheint, trotz meiner besten Bemühungen, kann ich nicht den Code wie erwartet arbeiten. Hier
ist ein isoliertes Beispiel dafür, was ich kam mit:
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?
Warum Sie die Person angebracht sind, in Frage bereitgestellte Lösung gelöst werden? Wenn ich mit dem Entityframework arbeite, lese ich einfach den Datensatz, ändere seine Eigenschaften und führe SaveChanges() aus; Etwas wie: Person person = context.People.First(); person.Name = "John"; context.SaveChanges(); – Areks
Da dies zwei Abfragen in der Datenbank + in der Realität erfordern würde, verwende ich ein generisches Repository. –
Das ist nicht wirklich ein generisches Repository, aber trotzdem +1 für @Areks. Wenn Sie sich Sorgen um 2 Anfragen machen, dann haben Sie andere Probleme – mituw16