我正在使用EF6并使用投影进行查询。我从问here:
的问题中得到了代码这段代码完美无缺,但是它生成了1200多行SQL,并且在第一次调用时,编译查询需要5秒以上,执行它需要300ms,这是不可接受的。你可以看到我的意思here:
我使用Glimpse来查看它生成的SQL是什么,并且有趣地注意到如果我删除注释,那么SQL只会减少200行代码。
我决定将SQL放入存储过程中,虽然它正确地返回了帖子数据,但是没有填充PostAuthor。
我仔细检查并使用Linq查询填充,但使用
_context.Posts.SqlQuery(...)
未填充PostAuthor对象。
我还仔细检查了SQL Server Management Studio中的原始SQL查询,并且正在返回所有数据,它只是在返回时没有被填充。
我错过了什么吗?这是一个已知的问题吗?
答案 0 :(得分:0)
请改为尝试:
var allposts = _context.Posts
.Include(p=>p.Comments)
.Include(p=>p.Attachments)
.Where(t => t.PostAuthor.Id == postAuthorId)
.ToList();
当然,发布SQL有助于确定是否有更好的方法来检索数据。