public void Excluir(Campo campo) { // Remover dependências do campo. using (repositorio.ObterTransacao()) { try { var respostas = new BMCampoResposta().ObterRespostasPorCampo(campo.ID); var bmCampoResposta = new BMCampoResposta(); foreach (var resposta in respostas) { // Remover Alternativas Respostas var bmAltRes = new BMAlternativaResposta(); var alternativasRespostas = bmAltRes.ObterPorCampoRespostaId(resposta.ID); foreach (var alternativaResposta in alternativasRespostas) { bmAltRes.Excluir(alternativaResposta); } // Remover Resposta bmCampoResposta.Excluir(resposta); } // Remover Alternativas var bmAlt = new BMAlternativa(); var alternativas = bmAlt.ObterPorCampoId(campo.ID); foreach (var alternativa in alternativas) { bmAlt.Excluir(alternativa); } // Finalmente, excluir o campo. repositorio.Excluir(campo); repositorio.Commit(); } catch { repositorio.RollbackTransaction(); throw; } } }