Tôi vừa có một số lượng lớn *blonde moment**, nhưng nó đã làm nổi bật sự khó chịu mà tôi có với Entity Framework. Tôi đã vô hiệu hóa tải chậm nên tôi buộc phải thực sự nghĩ về những dữ liệu tôi yêu cầu để giữ cho ứng dụng càng nhanh càng tốt.Entity Framework - Điều hướng và Bao gồm các thuộc tính thông qua các bộ sưu tập
Vì vậy, để trả lại dữ liệu trong một truy vấn, tôi cần phải tận dụng các phương pháp Include
:
var query = from item in context.Customers
.Include(x=> x.Orders)
select item
Điều này là tốt cho đến khi tôi muốn chọn một mục một chút sâu hơn vào hệ thống phân cấp. Ví dụ:
Customer 1-* Orders *-1 Factory 1-1 Factory Type
Theo như tôi biết, cách duy nhất để trả lại tất cả dữ liệu này háo hức sẽ phải làm như sau:
var query = from item in context.Customers
.Include("Orders.Factory.FactoryType")
select item
Với trên tôi không thể sử dụng số System.Data.Entity
Lambdas theo ví dụ đầu tiên của tôi. Có ai biết nếu tôi đang thiếu một cái gì đó hiển nhiên ở đây, hoặc tôi bị mắc kẹt với việc sử dụng khai báo chuỗi cho các thuộc tính chuyển hướng của tôi thông qua các bộ sưu tập?
Nếu tôi không có bất kỳ bộ sưu tập, tôi chỉ có thể viết:
.Include(x=> x.Order.OrderType.Factory.FactoryType) // No bother
Nhưng vì bộ sưu tập Orders
, không có cách nào để bước qua để sở hữu một con như xa như tôi có thể nói (FirstOrDefault
, SingleOrDefault
, v.v., không hoạt động).
** nó chỉ là một turn-of-cụm từ, tôi xảy ra là rất thích cô gái tóc vàng *