Пример #1
0
        public async Task UpdateAsync(Seller obj)
        {
            //Any - serve para verificar que existe algum registro no banco de dados na condição passada
            //Se não existir, lançar exceção.

            bool hasAny = await _context.Seller.AnyAsync(x => x.Id == obj.Id);

            if (!hasAny)
            {
                throw new NotFoundException("Id not found");
            }
            //Quando você chama a operação de atualizar no BD, O BD pode retornar uma exceção e conflito
            //de concorrência
            //Criar um try-catch para capturar uma possível exceção de concorrência do BD.

            try
            {
                _context.Update(obj);
                await _context.SaveChangesAsync();
            }

            /*DbUpdateConcurrencyException - exceção lançada pelo Entity Framework
             * No cath será relançada a exceção em nível de serviço criada
             * ou seja, o cath intercepta uma exceção do nível de acesso a dados e relança a exceção,
             * usando a própria exceção em nível de serviço. Muito importante para segregar as camadas.
             * A camada de serviço  não vai propagar uma exceção do nível de acesso a dados, a exceção será
             * lançada na própria camada de serviço. Assim sendo, o controlador, no caso, o SellersController,
             * vai ter de lidar somente com exceções da camada de serviço, é uma forma de respeitar a arquitetura
             * proposta.*/
            catch (DbUpdateConcurrencyException e)
            {
                throw new DBConcurrencyException(e.Message);
            }
        }
Пример #2
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,Name")] Department department)
        {
            if (id != department.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(department);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!DepartmentExists(department.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(department));
        }