2011-01-20 16 views
25

Đó là mã đang hoạt động;Multi-Level Bao gồm trong CodeFirst - EntityFrameWork

IQueryable<Product> productQuery = ctx.Set<Product>().Where(p => p.Id == id).(Include"Contexts.AdditionalProperties.Field"); 

Nhưng bạn biết rằng nó không thể sản xuất biên dịch lỗi thời gian nếu chúng ta đã sai lầm trong bản Tuyên Bố chuỗi trong "Contexts.AdditionalProperties.Field"

Tôi muốn viết mã dưới đây;

IQueryable<Product> productQuery = ctx.Set<Product>().Where(p => p.Id == id).Include(p => p.Contexts); 

Nhưng tuyên bố trên không thể xác định được AdditionalProperties và Field.

Chúng ta nên làm gì?

Tôi muốn viết nhiều hơn một bao gồm cho truy vấn xây dựng.

Cảm ơn.

Trả lời

43

Nếu AdditionalProperties là một tham chiếu duy nhất để đối tượng khác:

using System.Data.Entity; 
... 
IQueryable<Product> productQuery = ctx.Set<Product>() 
     .Include(p => p.Contexts.AdditionalProperties.Field) 
     .Where(p => p.Id == id); 


Nếu AdditionalProperties là một bộ sưu tập sau đó bạn có thể sử dụng Chọn phương pháp:

IQueryable<Product> productQuery = ctx.Set<Product>() 
     .Include(p => p.Contexts.AdditionalProperties.Select(a => a.Field)) 
     .Where(p => p.Id == id); 

Don đừng quên nhập System.Data.Enti ty không gian tên trong tệp lớp học của bạn!

+1

Bạn đánh tôi với nó;) –

+0

Tôi phải nói với bạn rằng đó là * không * một trò chơi công bằng ... Vì tôi đã trả lời câu hỏi này một vài tháng trước đây. Xin lỗi anh bạn! –

+0

Cảm ơn bạn đã trả lời nhanh! Làm thế nào tôi có thể thêm một nơi contion cho AdditionalProperties mà là một List <> loại đối tượng? –