public ActionResult LoadCidades() { //Apago os registos das cidades using (Repositorio <Cidade> rcid = new Repositorio <Cidade>()) { rcid.Deletar(e => e.uf != string.Empty); rcid.Commit(); } //Apago os registos das ufs using (Repositorio <UF> ruf = new Repositorio <UF>()) { ruf.Deletar(e => e.uf != string.Empty); ruf.Commit(); } dynamic loaded = ""; try { int cUF = 0; string[] linha; string filepath = Server.MapPath("~/App_Data/ScriptsBD/Municipios.csv"); List <UF> ufs = new List <UF>(); UF uf = new UF(); List <Cidade> mun = new List <Cidade>(); var linhas = System.IO.File.ReadAllLines(filepath); bool primeiraLinha = true; int contador = 0; foreach (var linhaArq in linhas) { linha = linhaArq.Split(';'); if (primeiraLinha) { cUF = Convert.ToInt32(linha[0]); uf.cuf = cUF; uf.uf = UtilDB.getUF(cUF.ToString(), "s"); uf.nome = UtilDB.getUF(cUF.ToString(), "u"); } if (linha != null) { if (cUF > 0 && (cUF.ToString() != linha[0])) { using (Repositorio <UF> rup = new Repositorio <UF>()) { rup.Adicionar(uf); rup.Commit(); } uf = new UF(); cUF = Convert.ToInt32(linha[0]); uf.cuf = cUF; uf.uf = UtilDB.getUF(cUF.ToString(), "s"); uf.nome = UtilDB.getUF(cUF.ToString(), "u"); using (Repositorio <Cidade> rcid = new Repositorio <Cidade>()) { rcid.AdicionarRange(mun); rcid.Commit(); } mun.Clear(); } if (cUF > 0 && cUF.ToString() == linha[0]) { mun.Add(new Cidade { uf = uf.uf, cMun = linha[2], xMun = linha[3], cep = "" }); contador++; //última linha lida if (contador == linhas.Length) { uf = new UF(); uf.cuf = cUF; uf.uf = UtilDB.getUF(cUF.ToString(), "s"); uf.nome = UtilDB.getUF(cUF.ToString(), "u"); using (Repositorio <UF> rup = new Repositorio <UF>()) { rup.Adicionar(uf); rup.Commit(); } using (Repositorio <Cidade> rcid = new Repositorio <Cidade>()) { rcid.AdicionarRange(mun); rcid.Commit(); } } } } primeiraLinha = false; } loaded = new { Registros = "OK", Qtd = contador }; } catch (Exception e) { loaded = new { Registros = "Erro ao gravar no BD", Qtd = 0, Motivo = e.InnerException }; } return(Json(loaded, JsonRequestBehavior.AllowGet)); }