IDocumentSession.SaveChanges () против транзакций - PullRequest
5 голосов
/ 17 ноября 2011

Клиент raven (IDocumentSession) ничего не отправляет на сервер, пока не будет вызван SaveChanges. Так что это можно рассматривать как реализацию UnitOfWork, верно?

Правильно ли я считаю, что единственная разница между SaveChanges и Transaction.Commit заключается в том, что последний откатывает все изменения, если что-то не получилось во время фиксации?

Ответы [ 2 ]

7 голосов
/ 17 ноября 2011

Если вы выполняете одну операцию, нет необходимости использовать явную транзакцию, поскольку SaveChanges приводит к неявной транзакции.

Если вы используете System.Transactions, вы можете выполнять несколько операций, например, несколько SaveChanges, используя одну и ту же транзакцию. Raven будет управлять транзакциями через http, используя заголовок запроса.

Подробнее в документации: http://ravendb.net/documentation/docs-api-transactions

6 голосов
/ 17 ноября 2011

jgauffin, SaveChanges () работает в транзакции, поэтому, если вы изменяете несколько документов, все они будут сохранены, или ни один не будет. Мы также поддерживаем System.Transaction, но обычно это не нужно.

...