/// <summary> /// Insere um registro na tabela de arquivos otimizados e salva as etiquetas otimizadas. /// </summary> /// <param name="direcao"></param> /// <param name="extensaoArquivo"></param> /// <param name="etiquetas"></param> /// <param name="codArquivoOtimiz"></param> /// <returns></returns> public ArquivoOtimizacao InserirArquivoOtimizacao(ArquivoOtimizacao.DirecaoEnum direcao, string extensaoArquivo, List <RelModel.Etiqueta> etiquetas, List <string> codArquivoOtimiz) { List <string> etiq = new List <string>(), forma = new List <string>(); foreach (RelModel.Etiqueta e in etiquetas) { etiq.Add(e.NumEtiqueta); forma.Add(e.Forma); } return(InserirArquivoOtimizacao(direcao, extensaoArquivo, etiq, forma, codArquivoOtimiz)); }
/// <summary> /// Insere um registro na tabela de arquivos otimizados e salva as etiquetas otimizadas. /// </summary> /// <param name="direcao"></param> /// <param name="extensaoArquivo"></param> /// <param name="etiquetas"></param> /// <param name="formas"></param> /// <param name="codArquivoOtimiz"></param> /// <returns></returns> public ArquivoOtimizacao InserirArquivoOtimizacao(ArquivoOtimizacao.DirecaoEnum direcao, string extensaoArquivo, List <string> etiquetas, List <string> formas, List <string> codArquivoOtimiz) { // Cria o registro na tabela ArquivoOtimizacao a = new ArquivoOtimizacao(); a.IdFunc = UserInfo.GetUserInfo.CodUser; a.DataCad = DateTime.Now; a.Direcao = (int)direcao; a.ExtensaoArquivo = extensaoArquivo.TrimEnd('\"'); // Estão ocorrendo três erros misteriosos ao chamar esse insert, "The given key was not present in the dictionary", // "Probable I/O race condition..." e "Index out of range", alterei para tentar inserir 5 vezes e caso ocorra erro, salva o mesmo no banco var cont = 1; while (true) { try { var id = Insert(a); a.IdArquivoOtimizacao = id; break; } catch { Thread.Sleep(500); if (cont++ == 6) { throw new Exception("Falha ao inserir arquivo otimização. ln.:162"); } } } // Insere as etiquetas na tabela auxiliar if (etiquetas != null) { for (int i = 0; i < etiquetas.Count; i++) { if (etiquetas[i] == null) { continue; } EtiquetaArquivoOtimizacao e = new EtiquetaArquivoOtimizacao(); e.IdArquivoOtimiz = a.IdArquivoOtimizacao; e.NumEtiqueta = etiquetas[i]; e.IdPedido = Glass.Conversoes.StrParaUint(e.NumEtiqueta.Split('-')[0]); e.TemArquivoOtimizacao = codArquivoOtimiz != null && formas != null && formas.Count > i && !String.IsNullOrEmpty(formas[i]) && codArquivoOtimiz.Contains(formas[i] + ".SAG"); // Estão ocorrendo três erros misteriosos ao chamar esse insert, "The given key was not present in the dictionary", // "Probable I/O race condition..." e "Index out of range", alterei para tentar inserir 5 vezes e caso ocorra erro, salva o mesmo no banco cont = 1; while (true) { try { EtiquetaArquivoOtimizacaoDAO.Instance.Insert(e); break; } catch { Thread.Sleep(500); if (cont++ == 6) { throw new Exception("Falha ao inserir etiquetas do arq. arquivo otimização. ln.:195"); } ; } } } } return(a); }