Tôi đã tìm kiếm thông qua SO và không thể giải được một giải pháp khả thi cho việc này. Tôi chỉ cố gắng tìm ra cú pháp cho nhiều phép nối bên trong trong LINQ to Entities là gì. Cảm ơnLàm thế nào để bạn thực hiện nhiều lần tham gia bên trong trong LINQ đối với các thực thể
Trả lời
Câu trả lời của Jon sẽ hoạt động, nhưng IMHO using join in LINQ to Entities is usually wrong, vì nó trùng lặp mã trong mô hình của bạn. Tôi có thể viết lại truy vấn của Jon theo cách đơn giản hơn nhiều trong L2E:
var query = from customer in db.Customers
from order in customer.Orders
from product in order.Products
from info in product.Info
select new
{
customer.Name,
info.BriefDescription
}
Khoảng 50% số lần nhập và 0% mã trùng lặp. Hãy xem xét rằng các mối quan hệ của bạn đã được xác định trong DB của bạn và trong mô hình của bạn. Bạn có thực sự muốn sao chép chúng một lần nữa trong mỗi truy vấn bạn viết, và phá vỡ các truy vấn của bạn khi bạn cấu trúc lại mô hình của bạn?
Vâng, tôi không biết LINQ to Entities đặc biệt, nhưng cú pháp LINQ bình thường sẽ là:
var query = from customer in db.Customers
join order in db.Orders on customer.ID equals order.ID
join product in db.Products on order.ProductID equals product.ID
join info in db.Info on product.InfoID equals info.ID
select new { customer.Name, info.BriefDescription };
(nghĩa là chỉ vài join
khoản).
Bây giờ tôi nghi ngờ rằng bạn đã thử điều đó - nếu có, điều gì đã xảy ra?
Trong khi điều này thực sự làm việc, tôi tin rằng đó là hình thức tốt hơn để sử dụng các mối quan hệ thay vì tham gia trong trường hợp cụ thể của L2E. –
Điều gì về trường hợp khi chúng ta bắt đầu với một vài thông tin-thực thể ('từ thông tin trong db.Info, nơi thông tin ... tham gia sản phẩm ...'), sẽ không được viết một cách rõ ràng được hiệu quả hơn trong trường hợp đó ? Hoặc nó không quan trọng trong EF và sẽ 'từ khách hàng trong db.Customers từ đơn đặt hàng trong customer.Orders từ sản phẩm theo thứ tự. Sản phẩm từ thông tin trong product.Info nơi thông tin ...' được chỉ là hiệu quả? – j00hi
@ j00hi: về cơ bản bạn sẽ phải xem xét SQL được tạo ra. –
- 1. Nhiều lần tham gia trong truy vấn Khung thực thể
- 2. Cách kết hợp tham gia bên trong và bên trái tham gia vào Khung thực thể
- 3. Buộc linq để thực hiện các kết nối bên trong
- 4. Thực hiện tham gia bên trong cho nhiều cột trong cùng một bảng
- 5. Làm cách nào để thực hiện điều này trong Entity Framework (nhiều nơi hoặc Tham gia)?
- 6. Cách thực hiện Tham gia giữa nhiều bảng trong LINQ lambda
- 7. Điều khoản động trong LINQ đối với các thực thể
- 8. LINQ Tham gia với nhiều điều kiện trong điều khoản
- 9. Cách tốt nhất để thực hiện Tham gia bên trong bằng khung công tác Zend?
- 10. Khuôn khổ thực thể - LINQ đối với thực thể - Các vấn đề truy vấn nhiều-nhiều-nhiều
- 11. mysql đối diện với tham gia bên trong
- 12. LINQ to SQL nhiều bảng bên ngoài tham gia
- 13. Ánh xạ tham gia các bảng trong khung thực thể
- 14. Tham gia lại trong LINQ?
- 15. Thực hiện việc bán tham gia với dữ liệu.table
- 16. Làm cách nào để thực hiện việc tham gia trái trong Ngôn ngữ truy vấn Hibernate?
- 17. thực hiện SwingWorker nhiều lần
- 18. nhibernate tạo ra bên ngoài tham gia bên ngoài trên nhiều-to-một thực thể
- 19. Làm thế nào để bạn thực hiện SQL từ bên trong một tập lệnh bash?
- 20. Làm cách nào để thực hiện phép nối ngoài bên ngoài với Dynamic Linq?
- 21. Quá nhiều lần tham gia bên ngoài trái trong khung Entity 4?
- 22. Thực hiện tham số LINQ Expression
- 23. Làm thế nào để giải quyết xung đột đối chiếu với Khuôn khổ thực thể?
- 24. Làm thế nào để bạn thực hiện IN hoặc CONTAINS trong LINQ bằng cách sử dụng các biểu thức LAMBDA?
- 25. Làm thế nào để bạn chèn một thực thể cho một mối quan hệ nhiều-nhiều? (thực thể khung)
- 26. Làm thế nào để bạn thực hiện công việc 'scrum' khi những người tham gia cách nhau 12 múi giờ?
- 27. Có bao nhiêu lần tham gia cho mỗi chức năng trong ứng dụng thế giới thực?
- 28. Làm thế nào để thực hiện chức năng Powershell nhiều lần song song
- 29. Làm thế nào để tham chiếu một hàm từ bên trong thực thi của chính nó?
- 30. Làm thế nào để có được tất cả các lĩnh vực bên ngoài tham gia với Unix tham gia?
wow..điểm tốt – user161433
@Craig - Tôi ước gì tôi đã hiểu những gì tôi đã xem ở đây một vài giờ trước. Những gì tôi đã bỏ lỡ là "từ thứ tự trong customer.Order" - Tôi đã làm tương đương với "từ thứ tự trong db.Orders", đó là hoàn toàn khác nhau. Cảm ơn cho điều này, mặc dù. – chris
Điều này tạo ra tham gia chéo trong truy vấn ... – dudeNumber4