2011-11-17 13 views
5

Il client raven (IDocumentSession) non invia nulla al server finché non viene chiamato SaveChanges. Quindi potrebbe essere considerato come un'implementazione di UnitOfWork, giusto?IDocumentSession.SaveChanges() vs Transazioni

Sono corretto nel pensare che l'unica differenza tra SaveChanges e Transaction.Commit è che quest'ultimo restituisce tutte le modifiche se qualcosa non è riuscito durante il commit?

risposta

7

Se si sta eseguendo una singola operazione, non è necessario utilizzare una transazione esplicita poiché i risultati SaveChanges in una transazione implicita.

Se si utilizza System.Transactions, è possibile eseguire più operazioni, ovvero più SaveChanges utilizzando la stessa transazione. Raven gestirà le transazioni su http utilizzando un'intestazione di richiesta.

Continua a leggere nella documentazione: http://ravendb.net/documentation/docs-api-transactions

+0

Kul med andra svenska RavenDb nissar;) (il commento non dice molto, ignoralo se non sei svedese) – jgauffin

6

jgauffin, SaveChanges() operano in una transazione, quindi se si sta modificando più documenti, tutti loro sarebbero stati salvati, o nessuno avrebbe. Supportiamo anche System.Transactions, ma di solito non è necessario.