2016-02-15 24 views
5

C'è un punto per salvare le modifiche dopo un'azione di sola lettura? Le entità vengono caricate nella cache, ma non cambia nulla, devono essere salvate le modifiche prima di disporre?Entity framework salva le modifiche

risposta

4

Da doc (DbContext.SaveChanges):

salva tutte le modifiche apportate in questo contesto al database sottostante.

Non è necessario chiamare SaveChanges se non sono state apportate modifiche al contesto.

Si può leggere di più su questo in dettaglio here

Un'entità può trovarsi in uno dei cinque stati come definito dal l'enumerazione EntityState. Questi stati sono:

  • Aggiunto: l'entità viene monitorata dal contesto, ma non esiste ancora nel database
  • Invariato: l'entità viene monitorata dal contesto ed esiste nel database, e la sua proprietà i valori non sono stati modificati rispetto ai valori nel database
  • Modificato: l'entità viene monitorata dal contesto ed esiste nel database e alcuni o tutti i relativi valori di proprietà sono stati modificati
  • Eliminato: l'entità viene monitorata dal contesto ed esiste nel database, ma è stata contrassegnata per l'eliminazione dal database al successivo salvataggio di SaveChanges chiamato
  • indipendente: l'entità non viene monitorato dal contesto

SaveChanges fa cose diverse per le persone in diversi stati:

  • entità Invariato non sono toccati dalla SaveChanges. Gli aggiornamenti non vengono inviati al database per le entità nello stato Invariato.
  • Le entità aggiunte vengono inserite nel database e quindi diventano invariate quando viene restituito SaveChanges.
  • Le entità modificate vengono aggiornate nel database e quindi diventano invariate quando viene restituito SaveChanges.
  • Le entità eliminate vengono cancellate dal database e vengono quindi rimosse dal contesto.
0

Non è necessario chiamare SaveChanges() a meno che non si esegue una Add o Update nel Entità.