383 messaggi dal 23 aprile 2007
ok, ma quindi il codice non dovrebbe essere così:

if (ModelState.IsValid)
{
var oldAlbum = db.Albums.Single(m => m.albumID == album.albumID);

// aggiorno l'album passato
//album.thumb = oldAlbum.thumb;
//album.nomeThumb = oldAlbum.nomeThumb;

// aggiorno l'album proveniente dal db
oldAlbum.thumb = album.thumb;
oldAlbum.nomeThumb = album.nomeThumb;


db.SaveChanges();

return RedirectToAction("Index");
}
ViewBag.genreID = new SelectList(db.Genres, "genreID", "description", album.genreID);
return View(album);

con la tua versione è corretto che non vengano effettuate modifiche nel db, perchè aggiorni l'oggetto passato come argomento e non quello proveniente da db
Modificato da historyX il 13 marzo 2013 14.55 -
17 messaggi dal 04 marzo 2013
No aspetta scusami, forse non mi sono spiegato bene;
nell'album passato come parametro le proprietò thumb e nomeThumb sono vuote perchè nella vista non c'è la possibilità di modificare queste proprietà, quindi io devo aggiornare l'album passato e non l'album proveniente dal db perchè quelle due proprietà nell'album passato sono uguali a null mentre nell'album prelevato da db sono valorizzate
383 messaggi dal 23 aprile 2007
quindi, torno alla domanda di prima, la savechanges non è superflua?
17 messaggi dal 04 marzo 2013
In realtà no, correggimi se sbaglio dato che sono alle prime armi con EF;
la savechages praticamente effettua le operazioni di scrittura sul database "scegliendo" tra (insert,update,delete) in base allo stato delle entità? (Added,Unchanged,Modified,Deleted,Detached) ?

in ogni caso provando ad eseguire l'applicativo senza la chiamata alla funzione SaveChanges la situazione non cambia, non viene generata alcuna eccezione però alla fine non scrive i risultati su db
Modificato da wais87 il 13 marzo 2013 15.10 -
383 messaggi dal 23 aprile 2007
per la prima domanda la risposta è: credo di si, è il framework che decide quale operazione effettuare in base alle operazioni effettuate sull'oggetto. per intenderci è un po come la commit eseguita nel db => se ci sono state modifiche fino a quel momento nel contesto le rende permanenti, diversamente non credo faccia nulla.

Nel tuo caso, il comportamento da te descritto corrisponde al codice che hai postato.
Probabilmente stai sbagliando approccio, ma non posso dirti altro non conoscendo la casistica. (e soprattutto, non conoscendo l'mvc)
17 messaggi dal 04 marzo 2013
Ok, ti ringrazio per la tua gentilezza, aspetto qualcuno più esperto di me con EF.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.