Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Exceção SQL irritante, provavelmente devido a algum código errado


O código no ListaServicosProcesso está criando o contexto db. Em seguida, ele está retornando um IQueryable.

Neste ponto, nenhuma solicitação foi enviada ao banco de dados.

Então há um para cada no código. Neste ponto, o EF diz "Preciso obter os dados do banco de dados". Então ele tenta obter os dados.

Mas o banco de dados de contexto agora está fora do escopo, então ele trava, na primeira linha que tenta usar os dados.

Existem 2 maneiras de contornar isso:
  • retorne uma lista do ListaServicosProcesso, isso forçará a execução da chamada do banco de dados
  • mova o for each para ListaServicosProcesso

Editar

Pharabus está correto db não está fora do escopo. O problema está aqui:
 db = new RENDBDataContext();

Uma nova instância do contexto está sendo criada sem que a antiga seja descartada. Tente Dispose of db no final do ListaServicosProcesso. Ainda melhor colocar db em uma instrução using. Mas então o foreach deve ser movido para dentro da instrução using.