Mã trong ListaServicosProcesso đang tạo db ngữ cảnh. Sau đó, nó sẽ trả về một IQueryable.
Tại thời điểm này, không có yêu cầu nào được gửi đến cơ sở dữ liệu.
Sau đó, có một cho mỗi trong mã. Lúc này EF nói "Tôi cần lấy dữ liệu từ cơ sở dữ liệu". Vì vậy, nó cố gắng lấy dữ liệu.
Nhưng ngữ cảnh db hiện nằm ngoài phạm vi, vì vậy nó bị lỗi, trên dòng đầu tiên cố gắng sử dụng dữ liệu.
Có 2 cách để giải quyết vấn đề này:
- trả về một danh sách từ ListaServicosProcesso, điều này sẽ buộc lệnh gọi cơ sở dữ liệu thực thi
- chuyển từng cái vào ListaServicosProcesso
Chỉnh sửa
Pharabus là chính xác db không nằm ngoài phạm vi. Vấn đề là ở đây:
db = new RENDBDataContext();
Một phiên bản mới của ngữ cảnh đang được tạo mà không loại bỏ cái cũ. Thử loại bỏ db ở cuối ListaServicosProcesso. Thậm chí tốt hơn hãy đặt db trong một câu lệnh using. Nhưng sau đó foreach phải được chuyển vào bên trong câu lệnh using.