Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Irytujący wyjątek SQL, prawdopodobnie z powodu jakiegoś źle wykonanego kodu

Kod w ListaServicosProcesso tworzy bazę danych kontekstu. Następnie zwraca IQueryable.

W tym momencie żadne żądanie nie zostało wysłane do bazy danych.

Następnie w kodzie jest dla każdego. W tym momencie EF mówi „muszę pobrać dane z bazy danych”. Próbuje więc uzyskać dane.

Ale baza danych kontekstu jest teraz poza zakresem, więc ulega awarii w pierwszym wierszu, który próbuje użyć danych.

Można to obejść na dwa sposoby:

  • zwróć listę z ListaServicosProcesso, wymusi to wykonanie wywołania bazy danych
  • przenieś dla każdego do ListaServicosProcesso

Edytuj

Pharabus jest poprawny db nie jest poza zakresem. Problem jest tutaj:

 db = new RENDBDataContext();

Tworzone jest nowe wystąpienie kontekstu bez usuwania starego. Spróbuj usunąć db na końcu ListaServicosProcesso. Jeszcze lepiej umieść db w instrukcji using. Ale wtedy foreach musi być przesunięty wewnątrz instrukcji using.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaki jest zalecany rozmiar partii dla SqlBulkCopy?

  2. Jak uzyskać rozmiar pola varchar[n] w jednej instrukcji SQL?

  3. Powolne uruchamianie usług SQL Reporting Services 2008 w trybie natywnym

  4. Python nie może znaleźć sterownika ODBC na Heroku po ustawieniu wszystkiego

  5. Prawidłowe wykorzystanie transakcji w SQL Server