public bool InserirPerfil(Perfil perfil, List <PerfilPagina> listaPaginas) { var repo = new RepositorioBase(); var result = true; try { repo.BeginTransaction(); perfil.Id = repo.SalvarSemTransacao(perfil); // Apaga todos os registros foreach (var entidade in listaPaginas) { var ent = repo.ObterTodos <PerfilPagina>() .Where(m => m.Perfil.Id == perfil.Id && m.Pagina.Id == entidade.Pagina.Id) .FirstOrDefault(); if (ent != null) { repo.DeletarSemTransacao(ent); } } //Insere somente os registros necessários foreach (var item in listaPaginas) { if (!VerificarAcessoPagina(item)) { item.Perfil = perfil; if (repo.SalvarSemTransacao(item) == 0) { throw new Exception(); } } } repo.CommitTransaction(); } catch (Exception ex) { var msgErro = ex.Message; repo.RollBackTransaction(); result = false; } return(result); }