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

Viết CTE đệ quy bằng cách sử dụng Entity Framework Cú pháp thông thạo hoặc cú pháp nội tuyến

AFAIK không hỗ trợ CTE đệ quy trong LINQ cũng như trong EF. Giải pháp là để hiển thị CTE dưới dạng một khung nhìn. Bài viết về truy vấn đệ quy hoặc phân cấp sử dụng EF Code First và Migrations chỉ ra cách triển khai dạng xem như vậy bằng cách sử dụng EF code first migrations.

Cố gắng mô phỏng CTE bằng cách thực hiện lặp lại phía máy khách đệ quy không mở rộng đến các tập dữ liệu lớn và dẫn đến trao đổi trò chuyện với máy chủ. Lưu ý cách mã EF của bạn trả về IEnumerable không phải IQueryable , có nghĩa là nó hiện thực hóa từng cấp độ và sau đó nối cấp độ tiếp theo cho mỗi mục nhập như một yêu cầu riêng biệt . Giải pháp dựa trên LINQ sẽ hoạt động hợp lý cho các cấu trúc phân cấp nông với số lượng mục nhập hạn chế (và lưu ý rằng nhiều dự án có thể có bố cục dữ liệu như vậy, bài đăng / câu trả lời của người dùng là một ví dụ điển hình), nhưng sẽ sụp đổ theo phân cấp sâu với nhiều yếu tố.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Cách cập nhật SUM của cột qua nhóm trong cùng một bảng

  2. Sự khác biệt giữa Float và Numeric / Decimal trong SQL Server - SQL Server / T-SQL Tutorial Part 33

  3. Làm phẳng các khoảng thời gian giao nhau

  4. cách gán giá trị cte cho biến

  5. Lọc theo Tùy chọn OFFSET-FETCH trong Truy vấn chọn - Hướng dẫn SQL Server / TSQL Phần 118