0

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

希望下面能清楚地解释底层数据库中的表是如何相关的。

OrderDetails > - 1 Books 1 - < BookCategories

如您所见,一本书可以有许多类别,而一本书可以出现在许多订单上。

我正在尝试获得特定类别中最畅销的书籍。

到目前为止,我已经设法获得了总体上最畅销的书籍,但我似乎无法将其扩展为在 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 的属性。

这是足够的信息来看看发生了什么。有人有任何指示吗?

谢谢

翅膀

4

1 回答 1

0

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

阅读什么是热切和延迟加载,您会在此页面上找到很多示例,例如:

var blogs = context.Blogs
                   .Include(b => b.Posts.Select(p => p.Comments))
                   .ToList();
于 2013-08-26T11:40:06.243 回答