Ho un modello di vista che incapsula solo di alcune delle proprietà del modello di database. Queste proprietà contenute nel modello di visualizzazione sono le sole proprietà che voglio aggiornare. Voglio che le altre proprietà conservino il loro valore.Entity Framework 6.1 Aggiornamento di un sottoinsieme di un record
Durante la mia ricerca ho trovato la risposta this che sembra essere perfetta per le mie esigenze, tuttavia, nonostante i miei migliori sforzi, non riesco a far funzionare il codice come previsto.
Ecco un esempio isolato di quello che mi si avvicinò con:
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; }
}
Che cosa sto facendo di sbagliato?
Perché si collega la persona? Generalmente quando lavoro con il framework di entità, recupero il record, modifico le sue proprietà ed eseguo SaveChanges(); Qualcosa come: Person person = context.People.First(); person.Name = "John"; context.SaveChanges(); – Areks
Poiché ciò richiederebbe due query sul database + in realtà, sto utilizzando un repository generico. –
Questo non è davvero un repository generico, ma comunque, +1 per @Areks ha detto. Se sei preoccupato per 2 query allora hai altri problemi – mituw16