首页 > 解决方案 > 将 LINQ 请求重新发送到 SQL

问题描述

我正在使用 EF 和 LINQ,但速度很慢。

我想重新提出清理 SQL 的请求,但是有问题。

例如,我有这个要求。

var request = await db.Journal.AsNoTracking().Where(x => x.userid == userId).Select(x => new Statistic
            {
                DoneAt = x.DoneAt,
                Description = x.Description,
                Procedures = x.Procedures.Select(a => new Procedures
                {
                    Name = a.Name,
                    Time = a.Time
                }).ToList()
            }).ToListAsync();

两个相关的表 Journal 和 Procedures。Journal中的一条记录与Procedures中的一条或多条记录有关系。并且很容易用 EF 映射它。我收到日记中每条记录的程序清单。没关系。

接下来,我尝试将此请求重新发送到 SQL,并且我正在使用 Join 在一个表中接收结果。但是当程序有超过一行时,我收到一个重复的行。没关系。但是使用它并不方便 - 需要解析它并使其像我使用 LINQ 和 EF 时一样(每个日志记录都有一个过程列表)。有没有其他方法或最佳实践,或者只是检索这些数据然后将其转换为对象?

标签: c#sqlasp.netsql-serverlinq

解决方案


推荐阅读