J'écris une application en utilisant MVC2 et EF4. J'ai créé des entités à partir de ma base de données, j'ai une table de feuille de temps et une table TimesheetEntry. J'utilise les fonctionnalités de liaison de modèle de MVC2 et recevoir avec succès un objet Timesheet avec ses entrées de feuille de temps remplies avec les entrées de feuille de temps créées par l'utilisateur.Comment mettre à jour une entité avec une propriété de navigation de collection (avec MVC2)
Si j'utilise la technique que je l'ai utilisé dans d'autres méthodes (ici l'objet feuille de temps est créé par le framework MVC):
Timesheet temp = context.Timesheets
.Include("TimesheetEntries")
.Where(t => t.Id == timesheet.Id).First();
context.ApplyCurrentValues<Timesheet>(temp.EntityKey.EntitySetName, timesheet);
context.SaveChanges();
Alors mes TimesheetEntries ne sont pas sauvés.
J'ai essayé sans succès de le faire par d'autres moyens, comme la suppression de toutes les entrées:
Timesheet temp = context.Timesheets
.Include("TimesheetEntries")
.Where(t => t.Id == timesheet.Id).First();
context.ApplyCurrentValues<Timesheet>(temp.EntityKey.EntitySetName, timesheet);
context.ExecuteStoreCommand(@"DELETE FROM TimesheetEntry WHERE Timesheet=" + timesheet.Id.ToString());
foreach (TimesheetEntry entry in timesheet.TimesheetEntries)
{
entry.Timesheet = timesheet.Id;
context.TimesheetEntries.AddObject(entry);
}
context.SaveChanges();
return Redirect("ListTimesheets?PersonnelId="+timesheet.Person);
Ce ne fonctionne pas correctement, je ne suis toujours pas obtenir TimesheetEntries dans le DB :-(Juste ? se demander si les aboiements iam le mauvais arbre ici tous ensemble
PS si quelqu'un veut plus d'informations sur l'une de ces choses faites-moi savoir et je peux poster plus de code
Je l'ai testé et cela fonctionne parfaitement. J'ai dû changer 'context.TimesheetEntries.ApplyCurrentValues (e)' sur la section de mise à jour '((contexte (IObjectContextAdapter)) .ObjectContext.ApplyCurrentValues (" TimesheetEntries ", e));' pour EF6. – beawolf