Exemplo n.º 1
0
 public order CommitTrans(int custID, ShopBasket myCart, out string message)
 {
     message = "Транзакция прошла успешно";
     // Запускаем транзакцию
     using (DbContextTransaction trans = db.Database.BeginTransaction())
     {
         try
         {
             if (myCart.GetTotal() == 0)
             {
                 throw new ApplicationException("Вы забили заполнить корзину!");
             }
             // Сохраняем изменения во всех таблицах
             order o = AddOrder(custID, myCart);
             // Фиксируем транзакцию
             trans.Commit();
             return(o);
         }
         catch (Exception ex)
         {
             // Откатывем транзакцию
             message = "Транзакция откатилась со следующей ошибкой: " +
                       ex.Message;
             trans.Rollback();
             return(null);
         }
         finally
         {
             // Чтобы контекст увидел результаты
             // работы транзакции, надо его пересоздать заново !!!
             // Либо запускать транзакцию внутри блока
             // using (db = new SkladContext()) {... }
             // При пересоздании контекст получает все новые данные из базы
             db.Dispose();
             db = new DbAppContext();
         }
     }
 }
Exemplo n.º 2
0
 public virtual void Dispose()
 {
     Db.Dispose();
 }