1

我对使用 linq 2 实体的查询之一有疑问。我试图在查询生成到数据库之前查看查询,但没有任何成功。我尝试使用 ToTraceString() 但无法导致无法将查询转换为 ObjectQuery。这是我的查询:

  var movies = (from m in watchedRepo.GetAll().Where(c => c.iUserId == userId).ToList()
                           join f in moviePageViewsRepository.GetAll() on m.iMovieId equals f.iMovieId
                            group f by new JoinClass { MovieId = f.iMovieId, Points = m.iPoints }
                           into g
                           orderby g.Key.Points descending , g.Sum(d => d.iScore) descending
                                select new JoinClass { MovieId = g.Key.MovieId, Points = g.Key.Points, PageViews = g.Sum(d => d.iScore) }).Skip(skip).Take(take);

如果我尝试从 linq 执行它,则会出现内存不足异常。请问有什么想法吗?

4

2 回答 2

3

问题ToList()出在查询的第一行。这将立即从wachtedRepo指定的UserId.

因为您的查询将成为混合 Linq to Entities / Linq to Objects,所以您不能转换为ObjectQuery. 删除后您的查询是否仍然有效ToList()

如果您想查看 Sql Server 中实际发生的情况,我建议您使用 Sql Server Profiler 工具来查看您的查询。

于 2012-05-03T10:28:48.687 回答
1

假设watchedRepo是表示数据库连接的 Linq to SQL 对象

watchedRepo.Log = Console.Error;

所有 SQL 查询都将打印为标准错误。

于 2012-05-03T10:28:21.123 回答