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(); } } }
public virtual void Dispose() { Db.Dispose(); }