Явная транзакция в Entity Framework 7

Кто-нибудь знает, как создать явную транзакцию в Entity Framework 7??? Вся информация, которую я нахожу, относится к версии 6 EF. Документация также очень неполная, так может ли кто-нибудь представить ее?

У меня есть dbContext, и я должен удалить объект и связанные объекты, а затем вставить их снова, но в той же транзакции, поэтому у меня всегда будет "версия" строк.

Ответы

Ответ 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. См. сообщение, например.