Optimization 优化嵌套Linq到SQL查询

Optimization 优化嵌套Linq到SQL查询,optimization,linq-to-sql,nested,Optimization,Linq To Sql,Nested,我有一个linq到sql查询,我正在尝试优化它。我发现了一个主要问题,它与被调用到数据库的sql查询的数量有关。由于查询的嵌套性质,它是巨大的!在SQL分析器中尝试14000行。哎哟 我正在研究如何快速加载和使用LoadWith,但是嵌套查询似乎有一个限制?错误:System.InvalidOperationException:LoadOptions LoadWith type graph.中不允许循环。。关于如何让LINQtoSQL加载一些相关数据并减少数据库命中率,有什么想法吗?谢谢

我有一个linq到sql查询,我正在尝试优化它。我发现了一个主要问题,它与被调用到数据库的sql查询的数量有关。由于查询的嵌套性质,它是巨大的!在SQL分析器中尝试14000行。哎哟

我正在研究如何快速加载和使用LoadWith,但是嵌套查询似乎有一个限制?错误:System.InvalidOperationException:LoadOptions LoadWith type graph.中不允许循环。。关于如何让LINQtoSQL加载一些相关数据并减少数据库命中率,有什么想法吗?谢谢

        List<EBCFPS> ebcfpsList = (from c in v3
                                                                    group c by c.CId into g
                                                                    select new EBCFPS()
                                                                    {
                                                                        CId = g.First().CId,
                                                                        CName = g.First().CName,
                                                                        CType = g.First().CType,
                                                                        SortOrder = g.First().SortOrder == null ? 0 : (int)g.First().SortOrder,
                                                                        EsGroup = (from q in g
                                                                                         select new EFPS()
                                                                                         {
                                                                                             EId = (int)q.EId,
                                                                                             EName = q.EName,
                                                                                             CESGroup = (from s in db.CES
                                                                                                              where s.EId == q.EId
                                                                                                              && s.CId == q.CId
                                                                                                              select new CESSFPS()
                                                                                                              {
                                                                                                                  CESId = s.CESId,
                                                                                                                  CId = s.CId,
                                                                                                                  EId = s.EId == null ? 0 : (int)s.EId,
                                                                                                                  FSCId = s.FSCId == null ? 0 : (int)s.FSCId,
                                                                                                                  SEV = s.SEV,
                                                                                                                  Score = s.Score
                                                                                                              }).ToList()
                                                                                         }).ToList()
                                                                    }).ToList();

抱歉,代码看起来有点粗糙。

答案是编译的查询。

有什么想法吗??提前谢谢!