2011-01-20 39 views
25

它是工作代碼;CodeFirst中的多級包含 - EntityFrameWork

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

但是你知道,它不能產生編譯時錯誤,如果我們在「Contexts.AdditionalProperties.Field」 MADE IN字符串聲明錯誤

我想下面編寫代碼;

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

但上面的語句不能給機會定義AdditionalProperties和Field。

我們該怎麼辦?

我想編寫多個包含構建查詢。

謝謝。

回答

43

如果AdditionalProperties是一個引用到另一個對象:

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


如果AdditionalProperties是一家集,那麼你可以使用選擇方法:

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

唐忘記導入System.Data.Enti在您的類文件中使用命名空間

+1

你打敗了我;) – 2011-01-20 19:08:33

相關問題