Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Ngoại lệ SQL khó chịu, có thể do một số mã được thực hiện sai

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm LEN không bao gồm dấu cách ở cuối trong SQL Server

  2. Mili giây từ DateTime trong SQL Server và C # không giống nhau

  3. SQL Server ARITHABORT

  4. Bạn có thể có logic if-then-else trong SQL không?

  5. SQL Server kiểm tra phân biệt chữ hoa chữ thường?