pas que je suis relativement nouveau à cela, mais je suis encore un peu gêné car cela devrait vraiment être simple ...MVC 4, 5 EF SaveChanges ne base de données mise à jour
Tout ce que je suis en train de faire est mise à jour une ligne existante dans une table de base de données. J'utilise d'abord le code EF (5 je crois).
Pour MVC 3 J'ai utilisé cette approche (qui a travaillé):
ReportCommon reportcommon = db.ReportCommon.Single(r => r.ReportCommonId == id);
reportcommon.IP = StaticUtilities.GetIPAddress();
db.ObjectStateManager.ChangeObjectState(reportcommon, EntityState.Modified);
db.SaveChanges();
J'ai essayé quelques exemples que j'ai trouvé et bien qu'ils n'erreur pas la base de données ne sont pas mis à jour. ..
[HttpPost]
public ActionResult Edit(CitizenEntryViewModel citizenDetails)
{
ActiveCitizen activeCitizen = db.ActiveCitizen.SingleOrDefault(m => m.ID == citizenDetails.ActiveCitizen.ID);
if (activeCitizen != null)
{
citizenDetails.ActiveCitizen.CitizenUpdatedRecordOn = DateTime.Now;
// Fields we don't edit but still need to pass back
citizenDetails.ActiveCitizen.PublicID = activeCitizen.PublicID;
citizenDetails.ActiveCitizen.IsKIN = activeCitizen.IsKIN;
activeCitizen = citizenDetails.ActiveCitizen;
db.SaveChanges();
}
Il n'y a pas besoin de changer manuellement l'état de l'objet en 'modified' Votre propriété' IP' dans le modèle est-elle correctement liée à la base de données? – Silvermind
Avez-vous essayé de changer ori? ginal Propriétés de l'objet 'activeCitizen' et l'enregistrer? Ou appelez 'db.ObjectStateManager.ChangeObjectState (activeCitizen, EntityState.Modified);' avant 'db.SaveChanges();'? – Zabavsky
Merci. Silvermind, le premier exemple de code a été tiré d'un projet MVC 3 il y a quelque temps. Zabavsky, j'ai essayé l'approche de changer l'état à 'modified' mais je n'ai pas semblé avoir accès à' ObjectStateManager'. VS Express 2012 indique: 'ActiveCitizenSystem.Models.ACSEntities' ne contient pas de définition pour ObjectStateManager. J'ai l'entrée namespace: 'using System.Data.Objects;' – ChrisCurrie