2014-07-10 73 views
1

我使用實體框架6 MVC和我使用此查詢控制器:實體框架6錯誤 - ICollection的不包含子實體的定義

 using (var context = new MyDbContext()) 
     { 

      IQueryable<ContentArticle> query; 


      query = context.ContentArticle.Where(
        c => c.ContentArticleSubdivisions.Subdivisions.Name == subdivision 

編譯器抱怨

'System.Collections.Generic.ICollection<MySite.DAL.Models.ContentArticleSubdivision>' does not contain a definition for 'Subdivisions' 

但是我的文章內容模型包括此屬性:

public virtual ICollection<ContentArticleSubdivision> ContentArticleSubdivisions { get; set; } 

和我conten t物品細分模型包括:

public partial class ContentArticleSubdivision 
{ 
    ... 

    public virtual ICollection<Subdivision> Subdivisions { get; set; } 
} 

所以我做錯了什麼?我想我需要修改查詢,以便查找可能包含在ContentArticleSubdivisions集合中的所有可能的細分。

回答

1

你需要使用某種基於集合的方法來做到這一點。我不完全確定你想要在這裏查詢什麼。我會假設你想要所有的細分存在匹配該名稱的文章。

query = context.ContentArticle.Where(
    c => c.ContentArticleSubdivisions.Any(cs => cs.Subdivisions.Any(s => s.Name == subdivision)) 
); 

你也可以簡化這個使用查詢理解語法,像這樣

query = from ca in context.ContentArticle 
     from cas in ca.ContentArticleSubdivisions 
     from s in cas.Subdivisions 
     where s.Name == subdivision 
     select ca; 
+0

是的,這是正確的,這就是我想要做的:) –