Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Eccezione SQL fastidiosa, probabilmente dovuta a un codice sbagliato

Il codice in ListaServicosProcesso sta creando il db di contesto. Quindi restituisce un IQueryable.

A questo punto nessuna richiesta è stata inviata al database.

Quindi c'è un per ciascuno nel codice. A questo punto EF dice "Ho bisogno di ottenere i dati dal database". Quindi cerca di ottenere i dati.

Ma il db di contesto ora è fuori ambito, quindi si arresta in modo anomalo, sulla prima riga che tenta di utilizzare i dati.

Ci sono 2 modi per aggirare questo problema:

  • restituisce una lista da ListaServicosProcesso, questo forzerà l'esecuzione della chiamata al database
  • sposta per ciascuno in ListaServicosProcesso

Modifica

Pharabus ha ragione db non è fuori portata. Il problema è qui:

 db = new RENDBDataContext();

Viene creata una nuova istanza del contesto senza che quella precedente venga eliminata. Prova Elimina db alla fine di ListaServicosProcesso. Ancora meglio posizionare db in un'istruzione using. Ma poi il foreach deve essere spostato all'interno dell'istruzione using.