public ActionResult EfetuarPedido(PedidoViewModel pedidoViewModel) { TempData["Menu"] = "efetuar-pedido"; if (!ModelState.IsValid) { return(View(pedidoViewModel)); } try { var lista = (List <KeyValuePair <Guid, PedidoDetalheViewModel> >)Session["Produtos"]; Pedido pedido = Mapper.Map <PedidoViewModel, Pedido>(pedidoViewModel); foreach (var item in lista) { if (item.Value.ValorFinal != null) { pedido.ValorTotal = pedido.ValorTotal + Convert.ToDecimal(item.Value.ValorFinal); } } _pedidoAppService.Add(pedido); List <PedidoDetalhes> pedidoDetalhes = new List <PedidoDetalhes>(); foreach (var item in lista) { item.Value.PedidoId = pedido.PedidoId; pedidoDetalhes.Add(Mapper.Map <PedidoDetalheViewModel, PedidoDetalhes>(item.Value)); } _pedidoAppService.AddPedidoDetalheRange(pedidoDetalhes); } catch (DbEntityValidationException ex) { string errors = ""; foreach (var eve in ex.EntityValidationErrors) { errors += "Entity of type " + eve.Entry.Entity.GetType().Name + " in state " + eve.Entry.State + " has the following validation errors:\n"; foreach (var ve in eve.ValidationErrors) { errors += "- Property: " + ve.PropertyName + ", Error: " + ve.ErrorMessage + "\n"; } } throw new Exception(errors); } catch (Exception ex) { throw ex; } return(RedirectToAction("Index")); }