Часть ответа будет заключаться в том, что DbContext.SaveChanges () автоматически выполняет транзакции, поэтому во многих случаях вам не нужно будет накатывать собственные транзакции. Каков ваш сценарий, и почему вы думаете, что вам нужно делать транзакции вручную?
Если вы решили, что они вам нужны, оберните SaveChanges в транзакцию:
using (TransactionScope transaction = new TransactionScope())
{
context.SaveChanges();
}
Если вы запустите Profiler, вы заметите, что транзакция откатывается после выхода из блока using {}. Чтобы зафиксировать вашу транзакцию, вызовите транзакцию.Complete (); после SaveChanges ().