// GET: Autores/Edit/5
        public async Task <ActionResult> Edit(int id)
        {
            var vm = await LivroBo.ProjetarPorIdAsync <LivroVm>(id);

            InicializarForm(vm);
            return(View(_form, vm));
        }
        // GET: Autores/Delete/5
        public async Task <ActionResult> Delete(int id)
        {
            try
            {
                var entidade = await LivroBo.FiltrarPorIdAsync(id);

                LivroBo.Deletar(entidade);
                return(RetornarMensagem());
            }
            catch (BusinessException ex)
            {
                return(RetornarMensagem(ex));
            }
        }
        public ActionResult Create(LivroVm vm)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    InicializarForm(vm);
                    return(View(_form, vm));
                }
                var entidade = Mapper.Map <Livro>(vm);

                LivroBo.Adicionar(entidade);

                return(RetornarMensagem());
            }
            catch (BusinessException ex)
            {
                ModelState.AddModelError("", ex.Message);
                InicializarForm(vm);
                return(View(_form, vm));
            }
        }
        public async Task <ActionResult> Edit(LivroVm vm)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    InicializarForm(vm);
                    return(View(_form, vm));
                }
                var entidade = await LivroBo.FiltrarPorIdAsync(vm.Id);

                Mapper.Map(vm, entidade);

                LivroBo.Atualizar(entidade);

                return(RetornarMensagem());
            }
            catch (BusinessException ex)
            {
                ModelState.AddModelError("", ex.Message);
                InicializarForm(vm);
                return(View(_form, vm));
            }
        }
        public async Task <ActionResult> List()
        {
            var entidades = await LivroBo.ProjetarTodosAsync <LivroVm>();

            return(View(_list, entidades.OrderBy(x => x.Nome)));
        }