Использование транзакций или SaveChanges (ложь) и AcceptAllChanges ()?

Хорошо, позвольте мне дать ему шанс,

<?php
  session_start(); // This is default taken care by laravel no need for that

  // Here we can work something
  if (!isset(

Хорошо, позвольте мне дать ему шанс,

[110]SESSION['user_login'])) {

Хорошо, позвольте мне дать ему шанс,

[110]SESSION['user_login'] = false; } // This Laravel version use Session; // top of the file after namespace deceleration if (Session::has('user_login'))) { Session::set('user_login', false); } ?>
339
задан Liam 20 March 2017 в 01:20
поделиться

1 ответ

В Entity Framework большую часть времени достаточно SaveChanges () . Это создает транзакцию или зачисляет в любую внешнюю транзакцию и выполняет всю необходимую работу в этой транзакции.

Иногда, хотя сопряжение SaveChanges (false) + AcceptAllChanges () полезно.

Наиболее полезным местом для этого являются ситуации, когда вы хотите выполнить распределенную транзакцию в двух разных контекстах.

Т.е. что-то вроде этого (плохо):

using (TransactionScope scope = new TransactionScope())
{
    //Do something with context1
    //Do something with context2

    //Save and discard changes
    context1.SaveChanges();

    //Save and discard changes
    context2.SaveChanges();

    //if we get here things are looking good.
    scope.Complete();
}

Если context1.SaveChanges () завершается успешно, но context2.SaveChanges () завершается неудачно, вся распределенная транзакция прерывается. Но, к сожалению, Entity Framework уже отменил изменения в context1 , поэтому вы не можете воспроизвести или эффективно зарегистрировать ошибку.

444
ответ дан 23 November 2019 в 00:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: