public async Task <IRespostaDeCadastroDeUnidade> CadastraUnidade(ISolicitacaoDeCadastroDeUnidade solicitacao)
        {
            await unitOfWork.BeginTransaction();

            try
            {
                var unidade = new UnidadeDeMedida(
                    solicitacao.Sigla,
                    solicitacao.NomeNoSingular,
                    solicitacao.NomeNoPlural
                    );

                //

                await repositorioDeUnidades.Add(unidade);

                //

                await unitOfWork.Commit();

                //

                return(new RespostaDeCadastroDeUnidadeDeMedida
                {
                    Sigla = solicitacao.Sigla,
                });
            }
            catch (Exception e)
            {
                await unitOfWork.Rollback();

                throw;
            }
        }
        public async Task Update(UnidadeDeMedida unidadeDeMedida)
        {
            try
            {
                await db.SaveChangesAsync();
            }
            catch (Exception)
            {
                // TODO: Tratar erros de persistência aqui.

                throw new ApplicationException();
            }
        }
        public async Task Remove(UnidadeDeMedida unidadeDeMedida)
        {
            try
            {
                db.Unidades.Remove(unidadeDeMedida);

                await db.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                // TODO: Tratar erros de persistência aqui.

                throw new ApplicationException($"Erro ao excluir unidade de medida '{unidadeDeMedida.Sigla}'.", ex);
            }
        }