EF4 Linq - 使用相关表格中的条件获取热门项目

时间:2013-08-26 11:21:45

标签: c# linq entity-framework entity-framework-4 linq-to-entities

我需要在EF4中的linq查询中包含3个表。我还使用dbcontext生成器来生成poco类。 linq查询正在查询poco对象。

希望下面解释表格在底层数据库中的清晰程度。

OrderDetails> - 1本书1 - < BookCategories

正如您所看到的,1本书可以有许多类别,并且可以在许多订单上出现一本书。

我正在努力获得特定类别的畅销书籍。

到目前为止,我已经成功地获得了最畅销的书籍,但我似乎无法将其扩展为包含书籍类别作为where子句中的标准

var topSellingBooks = (from p in this.context.OrderDetails
                        where p.IssueId == issueId && p.PublicationId != "4TC" 
                        group p by p.BookId
                        into bookGroup
                        select new 
                            { 
                                BookNo = bookGroup.Key, 
                                BookCount = bookGroup.Sum(q => q.Quantity) 
                            }).OrderByDescending(q => q.BookCount)
                              .Take(noOfBooks);

使用导航属性,我希望我可以添加

&& p.Books.BookCategories.CategoryId_FK=="MyCatId"

到我上面的标准,但这似乎不可能。我无法使用上述内容访问BookCategories的属性。

这是足够的信息,看看发生了什么。有人有指点吗?

谢谢

1 个答案:

答案 0 :(得分:0)

这似乎是加载策略的问题。 您需要在查询中使用Include相关对象。

Read什么是急切和懒惰的加载,你会在这个页面上找到很多例子:

var blogs = context.Blogs
                   .Include(b => b.Posts.Select(p => p.Comments))
                   .ToList();