Ответ 1
Функциональность транзакции включена в EF7, начиная только с RC1 (см. выражение). Вызов .SaveChanges()
(или .SaveChangesAsync()
) должен использовать автоматическую транзакцию. Тогда я предполагаю, что состояние некоторых элементов объектов должно быть помечено как "Удалено" раньше, например.
Можно начать транзакцию явно, обернув фрагмент манипуляции в базе данных внутри
using (context.Database.BeginTransaction()) {
/*do something*/
}
Транзакция будет совершена вызовом .Dispose()
в конце блока using
. Альтернативно можно использовать
using (var transaction = await context.Database.BeginTransactionAsync()) {
/*do something*/
/*one can call
transaction.Rollback() or transaction.Commit()
explicitly in the code */
}
Это общее все должно выглядеть в предыдущей версии Entity Framework. См. сообщение, например.