/// <summary>
        /// Salva o plano de aula
        /// </summary>
        /// <param name="lstTurmaAula"></param>
        /// <param name="lstTurmaAulaPlanoDisc"></param>
        /// <param name="lstTurmaAulaPlanoDiscDeletar"></param>
        /// <returns></returns>
        public static bool SalvarEmLote(List <CLS_TurmaAula> lstTurmaAula
                                        , List <CLS_TurmaAulaPlanoDisciplina> lstTurmaAulaPlanoDisc
                                        , List <CLS_TurmaAulaPlanoDisciplina> lstTurmaAulaPlanoDiscDeletar)
        {
            CLS_TurmaAulaPlanoDisciplinaDAO dao = new CLS_TurmaAulaPlanoDisciplinaDAO();

            dao._Banco.Open(IsolationLevel.ReadCommitted);

            try
            {
                DataTable dtTurmaAula             = CLS_TurmaAula.TipoTabela_TurmaAula();
                DataTable dtTurmaAulaPlanoDeletar = CLS_TurmaAulaPlanoDisciplina.TipoTabela_TurmaAulaPlanoDisciplina();
                DataTable dtTurmaAulaPlanoSalvar  = CLS_TurmaAulaPlanoDisciplina.TipoTabela_TurmaAulaPlanoDisciplina();

                lstTurmaAula.ForEach(p =>
                {
                    if (CLS_TurmaAulaBO.ValidarAula(p, new List <sDadosAulaProtocolo>(), new List <CLS_TurmaAula>()))
                    {
                        dtTurmaAula.Rows.Add(CLS_TurmaAulaBO.TurmaAulaToDataRow(p, dtTurmaAula.NewRow()));
                    }
                });

                if (lstTurmaAulaPlanoDisc != null)
                {
                    lstTurmaAulaPlanoDiscDeletar.ForEach(p =>
                    {
                        dtTurmaAulaPlanoDeletar.Rows.Add(CLS_TurmaAulaPlanoDisciplinaBO.TurmaAulaToDataRow(p, dtTurmaAulaPlanoDeletar.NewRow()));
                    });

                    lstTurmaAulaPlanoDisc.ForEach(p =>
                    {
                        dtTurmaAulaPlanoSalvar.Rows.Add(CLS_TurmaAulaPlanoDisciplinaBO.TurmaAulaToDataRow(p, dtTurmaAulaPlanoSalvar.NewRow()));
                    });
                }

                bool retorno = dao.SalvarEmLote(dtTurmaAula, dtTurmaAulaPlanoDeletar, dtTurmaAulaPlanoSalvar);

                return(retorno);
            }
            catch (Exception err)
            {
                dao._Banco.Close(err);
                throw;
            }
            finally
            {
                dao._Banco.Close();
            }
        }
        /// <summary>
        /// Deleta os relacionamentos na tabela
        /// </summary>
        /// <param name="lstTurmaAulaPlanoDisc"></param>
        /// <param name="banco"></param>
        /// <returns></returns>
        public static bool DeletarAulasPlanos(List <CLS_TurmaAulaPlanoDisciplina> lstTurmaAulaPlanoDiscDeletar, TalkDBTransaction banco = null)
        {
            try
            {
                DataTable dtTurmaAula = CLS_TurmaAulaPlanoDisciplina.TipoTabela_TurmaAulaPlanoDisciplina();

                lstTurmaAulaPlanoDiscDeletar.ForEach(p =>
                {
                    dtTurmaAula.Rows.Add(CLS_TurmaAulaPlanoDisciplinaBO.TurmaAulaToDataRow(p, dtTurmaAula.NewRow()));
                });

                return(banco == null ?
                       new CLS_TurmaAulaPlanoDisciplinaDAO().DeletarAulas(dtTurmaAula) :
                       new CLS_TurmaAulaPlanoDisciplinaDAO {
                    _Banco = banco
                }.DeletarAulas(dtTurmaAula));
            }
            catch
            {
                throw;
            }
        }