5

Я не совсем понимаю, нужно ли использовать TransactionScope или DbContext.SaveChanges(), чтобы совершить транзакцию, состоящую из нескольких операций CRUD. Я использую SQL Server в бэкэнд.Поддерживает ли EF5 DbContext.SaveChanges транзакцию фиксации и откат?

+1

Родственные: http://stackoverflow.com/questions/6028626/ef-code-first-dbcontext-and-transactions –

ответ

8

Если вы звоните SaveChanges() несколько раз и хотите отменить все эти изменения, да, вы бы хотели использовать TransactionScope. Если вы вызываете SaveChanges() один раз в контекст, все ваши изменения сразу же переносятся в базу данных в транзакцию за кулисами.

+0

Просто подтверждение требуется для следующего сценария: В случае, если я вызову SaveChanges() один раз для нескольких CRUD я должен удалить объект DbContext для отката транзакции. – Jas

+0

Я не думаю, что утилизация 'DbContext' откажет транзакцию. Если это так, вы, вероятно, захотите просмотреть опции перегрузки для 'SaveChanges()', которые вы можете отключить автоматическую фиксацию транзакции, и вы будете отвечать за вызов 'AcceptAllChanges()'. http://msdn.microsoft.com/en-us/library/bb739065.aspx –

+0

Но ссылка msdn, которую вы указали, говорит, что ObjectContext.SaveChanges() api теперь устарел. Кроме того, ObjectContext.SaveChanges() откатит всю транзакцию в случае исключения, созданного SQL Server. Кроме того, нет ли более простого способа отменить мои операции CRUD с помощью DbContext? – Jas

Смежные вопросы