多包括超时

时间:2014-07-17 23:17:23

标签: c# sql linq entity-framework timeout

我正在使用EF 6.1.1,我正在尝试使用下面的LINQ查询回送数据。我可以在不到30行中手工编写这个查询,但实体框架正在成千上万。请参阅下面的SQL,我错过了什么?

LINQ

_UserRepository
            .Query()
            .Include(a => a.PaymentSchedules)
            .Include(a => a.Profile.ProfileImages)
            .Include(a => a.Profile.ProfileImages.Select(c => c.Image.HomePageImage))  //<<< this causes 100+ joins
            .Include(a => a.Profile.ProfileImages.Select(i => i.Image.HoverOverImage)) //<<< this causes 100+ joins
            .AsQueryable()
            .Where(a => a.PaymentSchedules.Any(p => p.Active == true && p.DatePaid > eighthOfMonth))
            .Where(a => a.Profile.ProfileImages.Any(prof => prof.CurrentImage == true))
            .Select(a => a.Profile)
            .OrderBy(a => a.Id) //require for using skip
            .Skip(skipInt)
            .Take(takeInt)
            .ToList();

SQL

** Stackoverflow甚至不允许我发布SQL,因为它大于100K字符并且包含超过200个左连接!!

请帮忙。

**已编辑:复制粘贴失败。

1 个答案:

答案 0 :(得分:-2)

EF功能非常强大,但我不喜欢它包含非常复杂的查询,包含许多连接或包含,我更喜欢使用Dapper(更快)。

https://github.com/StackExchange/dapper-dot-net

此外,您可以将查询拆分为较小的查询Ex:在单独的查询中获取ProfileImages,然后在PaymentSchedules中获取..