2011-07-28 67 views
1

使用Entity Framework 4.1,我有一个具有多对多关系的标签和Article对象。 我只想检索包含标签的文章列表。然而下面的代码失败:Linq to Entities查询多对多关系

var db = new ArticleContext(); 
     var tag = db.Tags.Find(tagId); 
     var articles= from article in db.Articles 
         where article.Tags.Contains(tag) 
         select article; 

错误是“只有原始类型(‘如的Int32,字符串,和GUID’)在这种情况下被支撑。” 我知道这是一个EF(http://msdn.microsoft.com/en-us/library/bb896317.aspx#RefNonScalarClosures)的已知问题,但什么是最佳解决方法?

+0

通过tag.Articles这无法访问? – majorpayne27

+0

不幸的是,EF默认不加载相关对象。 – Judo

+0

@Judo:您可以强制使用原始查询中的'.Include()'或稍后的'.Load()'加载相关对象。 –

回答

2

试试这个

var articles= from article in db.Articles 
       where article.Tags.Any(tag => tag.Id == tagId) 
       select article; 
+0

完美。我试图使用包含没有成功。 – Judo