private void GeraGetSet(string NomeDaTabela, TrataNome tratanome, ITabelasECampos tabelasecampos, List<string> Listacampos, StreamWriter aFile, bool RetiraS, bool PropriedadesAutomaticas)
        {
            aFile.Write("\n");
            var count = tabelasecampos.CamposChavesDaTabela(NomeDaTabela).Count;
            if (count > 1)
            {
                aFile.Write("\t\tpublic virtual PK Pk");
                if (!PropriedadesAutomaticas)
                {
                    aFile.Write("\n");
                    aFile.WriteLine("\t\t{");
                    aFile.WriteLine("\t\t\tget { return this.pk; }");
                    aFile.WriteLine("\t\t\tset { pk = value; }");
                    aFile.WriteLine("\t\t}");
                    aFile.Write("\n");
                }
                else
                {
                    aFile.Write(" { get; set; }\n");
                }
            }

            foreach (string campos in Listacampos)
            {
                if (count == 1 || !tabelasecampos.CampoChavesDaTabela(NomeDaTabela, campos))
                {
                    string linha;
                    if (tabelasecampos.NomeDaTabelaDaChaveEstrgeira(NomeDaTabela, campos) != "NULL")
                    {
                        linha = "        public virtual " + tratanome.ConverteAPrimeiraLetraParaMaisculoERetiraUnderline(tabelasecampos.NomeDaTabelaDaChaveEstrgeira(NomeDaTabela, campos), RetiraS) +
                            " " + tratanome.ConverteAPrimeiraLetraParaMaisculoERetiraUnderline(campos.ToLower(), RetiraS);
                        aFile.Write(linha);
                        if (!PropriedadesAutomaticas)
                        {
                            aFile.Write("\n");
                            aFile.Write("        {\n");
                            aFile.Write("            get{ return this." + tratanome.ConverteParaMinusculoERetiraUnderline(campos.ToLower(), RetiraS) + "; }\n");
                            aFile.Write("            set{ this." + tratanome.ConverteParaMinusculoERetiraUnderline(campos.ToLower(), RetiraS) + " = value; }\n");
                            aFile.Write("        }\n");
                            aFile.Write("\n");
                        }
                        else
                        {
                            aFile.Write(" { get; set; }\n");

                        }

                    }
                    else
                    {

                        linha = "        public virtual " + tabelasecampos.TipoDadoCSharp(NomeDaTabela, campos) +
                            " " + tratanome.ConverteAPrimeiraLetraParaMaisculoERetiraUnderline(campos.ToLower(), RetiraS);
                        aFile.Write(linha);
                        if (!PropriedadesAutomaticas)
                        {
                            aFile.Write("\n");
                            aFile.Write("        {\n");
                            aFile.Write("            get{ return this." + tratanome.ConverteParaMinusculoERetiraUnderline(campos.ToLower(), RetiraS) + "; }\n");
                            aFile.Write("            set{ this." + tratanome.ConverteParaMinusculoERetiraUnderline(campos.ToLower(), RetiraS) + " = value; }\n");
                            aFile.Write("        }\n");
                            aFile.Write("\n");
                        }
                        else
                        {
                            aFile.Write(" { get; set; }\n");

                        }
                    }

                }

            }
            string nomedatabelapassou = string.Empty;
            int i = 0;
            foreach (string tabela in tabelasecampos.TabelasOndeARelacionamento(NomeDaTabela))
            {
                if (nomedatabelapassou == tabela)
                {
                    i += 1;
                    nomedatabelapassou = tabela;
                }
                else
                {
                    i = 0;
                    nomedatabelapassou = tabela;
                }
                if (i > 0)
                {

                    aFile.Write("        public virtual IList<" + tratanome.ConverteAPrimeiraLetraParaMaisculoERetiraUnderline(tabela, RetiraS) +
                         "> " + tratanome.ConverteAPrimeiraLetraParaMaisculoERetiraUnderline(tabelasecampos.CamposChavesEstrageiraDaTabela(tabela)[i], RetiraS) + "List");

                    if (!PropriedadesAutomaticas)
                    {
                        aFile.Write("\n");
                        aFile.Write("        {\n");
                        aFile.Write("            get{ return this." + tratanome.ConverteParaMinusculoERetiraUnderline(tabelasecampos.CamposChavesEstrageiraDaTabela(tabela)[i], RetiraS) + "List; }\n");
                        aFile.Write("            set{ this." + tratanome.ConverteParaMinusculoERetiraUnderline(tabelasecampos.CamposChavesEstrageiraDaTabela(tabela)[i], RetiraS) + "List = value; }\n");
                        aFile.Write("        }\n");
                        aFile.Write("\n");
                    }
                    else
                    {
                        aFile.Write(" { get; set; }\n");

                    }

                }
                else
                {

                    aFile.Write("        public virtual IList<" + tratanome.ConverteAPrimeiraLetraParaMaisculoERetiraUnderline(tabela, RetiraS) +
                    "> " + tratanome.ConverteAPrimeiraLetraParaMaisculoERetiraUnderline(tabela, RetiraS) + "List");
                    if (!PropriedadesAutomaticas)
                    {
                        aFile.Write("\n");
                        aFile.Write("        {\n");
                        aFile.Write("            get{ return this." + tratanome.ConverteParaMinusculoERetiraUnderline(tabela, RetiraS) + "List; }\n");
                        aFile.Write("            set{ this." + tratanome.ConverteParaMinusculoERetiraUnderline(tabela, RetiraS) + "List = value; }\n");
                        aFile.Write("        }\n");
                        aFile.Write("\n");
                    }
                    else
                    {
                        aFile.Write(" { get; set; }\n");

                    }

                }

            }

            aFile.Write("\n");
        }
        private void GeraVariaveis(string NomeDaTabela, TrataNome tratanome, ITabelasECampos tabelasecampos, List<string> Listacampos, StreamWriter aFile, bool RetiraS, bool PropriedadesAutomaticas)
        {
            int count = tabelasecampos.CamposChavesDaTabela(NomeDaTabela).Count;
            if (count > 1)
            {

                GeraClassePK(NomeDaTabela, tratanome, tabelasecampos, aFile, RetiraS, PropriedadesAutomaticas);
                if (PropriedadesAutomaticas)
                    return;
                aFile.WriteLine("\t\tprivate PK pk;");
            }

            if (PropriedadesAutomaticas)
                return;
            foreach (string campos in Listacampos)
            {
                if (count == 1 || !tabelasecampos.CampoChavesDaTabela(NomeDaTabela, campos))
                {

                    string linha;
                    if (tabelasecampos.NomeDaTabelaDaChaveEstrgeira(NomeDaTabela, campos) != "NULL")
                    {

                        linha = "        private " + tratanome.ConverteAPrimeiraLetraParaMaisculoERetiraUnderline(tabelasecampos.NomeDaTabelaDaChaveEstrgeira(NomeDaTabela, campos), RetiraS) +
                           " " + tratanome.ConverteParaMinusculoERetiraUnderline(campos.ToLower(), RetiraS) + ";\n";

                    }
                    else
                    {
                        linha = "        private " + tabelasecampos.TipoDadoCSharp(NomeDaTabela, campos) +
                           " " + tratanome.ConverteParaMinusculoERetiraUnderline(campos.ToLower(), RetiraS) + ";\n";
                    }
                    aFile.Write(linha);
                }
            }

            string nomedatabelapassou = string.Empty;
            int i = 0;
            foreach (string tabela in tabelasecampos.TabelasOndeARelacionamento(NomeDaTabela))
            {
                if (nomedatabelapassou == tabela)
                {
                    i += 1;
                    nomedatabelapassou = tabela;
                }
                else
                {
                    i = 0;
                    nomedatabelapassou = tabela;
                }

                if (i > 0)
                {
                    aFile.Write("        private IList<" + tratanome.ConverteAPrimeiraLetraParaMaisculoERetiraUnderline(tabela, RetiraS) +
                       "> " + tratanome.ConverteParaMinusculoERetiraUnderline(tabelasecampos.CamposChavesEstrageiraDaTabela(tabela)[i], RetiraS) + "List;\n");

                }
                else
                {

                    aFile.Write("        private IList<" + tratanome.ConverteAPrimeiraLetraParaMaisculoERetiraUnderline(tabela, RetiraS) +
                               "> " + tratanome.ConverteParaMinusculoERetiraUnderline(tabela, RetiraS) + "List;\n");

                }
            }

            aFile.Write("\n");
        }