Sto riscontrando qualche problema con l'aggiornamento della raccolta correlata di entità.Entity Framework POCO: aggiorna una proprietà di navigazione
In sostanza il problema è il seguente:
public class Student
{
public virtual ICollection<Lecture> Lectures { get; set; }
public void AddLecture(Lecture lecture)
{
Lectures.Add(lecture);
}
public void CancelChanges()
{
_context.Refresh(RefreshMode.StoreWins, this);
_context.LoadProperty(this, (o) => o.Lectures,
MergeOption.OverwriteChanges);
}
}
public class Grade
{
public virtual Student { get; set; }
}
Ora ho un po 'interfaccia grafica per l'aggiunta di lezioni e, se vogliamo possiamo annullare il processo di editing:
public void ExampleEdit()
{
Student student = _context.Students.SingleOrDefault(/* blah */);
student.AddLecture(_context.Lectures.SingleOrDefault(/* e.g. math */));
student.CancelChanges();
// At this point student SHOULD have no lectures anymore since the
// property was loaded with overwrite changes option.
// Yet the Lectures still contains the lecture we added there
}
Quindi, è il codice cattivo? C'è qualche metodo che uso in modo errato? È possibile COMPLETAMENTE ricaricare l'intero oggetto? ..
Grazie mille per la spiegazione - ha fatto un sacco di cose molto più chiare nella mia testa. E la soluzione che hai proposto è molto utile: ho appena aggiornato il mio codice e la cosa funziona davvero. – Jefim
Siete i benvenuti, sono contento che abbia aiutato :) –