Кодът в ListaServicosProcesso създава контекстната база данни. След това връща IQueryable.
На този етап няма изпратена заявка към базата данни.
След това има за всеки в кода. В този момент EF казва „Трябва да получа данните от базата данни“. Така че се опитва да получи данните.
Но контекстната база данни вече е извън обхвата, така че се срива на първия ред, който се опитва да използва данните.
Има 2 начина да заобиколите това:
- връща списък от ListaServicosProcesso, това ще принуди извикването на базата данни да се изпълни
- преместете за всеки в ListaServicosProcesso
Редактиране
Pharabus е правилен db не е извън обхвата. Проблемът е тук:
db = new RENDBDataContext();
Създава се нов екземпляр на контекста, без старият да се изхвърля. Опитайте да изхвърлите db в края на ListaServicosProcesso. Още по-добре поставете db в израз за използване. Но тогава foreach трябва да бъде преместен вътре в оператора using.