我正在使用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个左连接!!
请帮忙。
**已编辑:复制粘贴失败。
答案 0 :(得分:-2)
EF功能非常强大,但我不喜欢它包含非常复杂的查询,包含许多连接或包含,我更喜欢使用Dapper(更快)。
https://github.com/StackExchange/dapper-dot-net
此外,您可以将查询拆分为较小的查询Ex:在单独的查询中获取ProfileImages,然后在PaymentSchedules中获取..