Connection.BeginTransaction и Entity Framework 4? - PullRequest
0 голосов
/ 09 февраля 2011

Я пытаюсь использовать транзакции с EF4 Code-first с единицей выполнения работы. Есть ли причина, по которой мы не можем использовать Connection.BeginTransaction из контекста? Он предназначен только для использования в транзакциях SQL? Потому что, когда я звоню, я получаю сообщение об ошибке: Недопустимая операция. Соединение закрыто.

Спасибо.

1 Ответ

1 голос
/ 09 февраля 2011

Часть ответа будет заключаться в том, что DbContext.SaveChanges () автоматически выполняет транзакции, поэтому во многих случаях вам не нужно будет накатывать собственные транзакции. Каков ваш сценарий, и почему вы думаете, что вам нужно делать транзакции вручную?

Если вы решили, что они вам нужны, оберните SaveChanges в транзакцию:

    using (TransactionScope transaction = new TransactionScope())
    {
        context.SaveChanges();
    }

Если вы запустите Profiler, вы заметите, что транзакция откатывается после выхода из блока using {}. Чтобы зафиксировать вашу транзакцию, вызовите транзакцию.Complete (); после SaveChanges ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...