2011-01-26 22 views
29

Cố gắng cắt giảm giải pháp EF4 của chúng tôi sang EF CTP5 và gặp sự cố.EF CTP5 - Tải Eager được đánh máy mạnh - Cách bao gồm các thuộc tính điều hướng lồng nhau?

Dưới đây là phần có liên quan của mô hình:

enter image description here

Mối quan hệ thích hợp: - Một đơn Quậnnhiều thành phố - Một đơn Thành phố có một nhà nước đơn

Bây giờ, tôi muốn thực hiện hàng đợi sau ry: - Nhận tất cả các hạt trong hệ thống, và bao gồm tất cả các thành phố và tất cả các bang cho những thành phố đó.

Trong EF4, tôi sẽ làm điều này:

var query = ctx.Counties.Include("Cities.State"); 

Trong EF CTP5, chúng tôi có một mạnh mẽ gõ Bao gồm, mà phải mất một Expression<Func<TModel,TProperty>>.

tôi có thể nhận được tất cả các thành phố của Quận không có vấn đề:

var query = ctx.Counties.Include(x => x.Cities); 

Nhưng làm thế nào tôi có thể nhận được Nhà nước cho những thành phố quá?

Tôi đang sử dụng tinh khiết POCO, vì vậy County.Cities là một ICollection<City>, do đó tôi không thể làm điều này:

var query = ctx.Counties.Include(x => x.Cities.State) 

Như ICollection<City> không có một tài sản gọi là State.

Nó gần giống như tôi cần sử dụng một IQuery có lồng nhau.

Bất kỳ ý tưởng nào? Tôi có cần dự phòng chuỗi ma thuật Bao gồm trong trường hợp này không?

Trả lời

51

Cho rằng bạn có thể sử dụng cho bạn những Chọn phương pháp:

var query = ctx.Counties.Include(x => x.Cities.Select(c => c.State)) 

Here bạn có thể tìm thấy một ví dụ khác.

+0

thông minh! đang cố gắng ... hãy theo dõi. – RPM1984

+0

Hoạt động tuyệt vời, cảm ơn một người đàn ông! +1 và được chấp nhận. Đã không nhìn thấy bạn trả lời nhiều câu hỏi EF4 gần đây - Ladislav đang đưa chúng ta xuống cả hai. :) – RPM1984

+0

Không có vấn đề gì! Đó là bởi vì tôi hoàn toàn tập trung vào các câu hỏi đầu tiên của EF Code. Tôi hy vọng bạn cũng bắt đầu sử dụng nó, vì tôi vẫn thấy tập tin EDMX trong câu hỏi của bạn :) –

Các vấn đề liên quan