实体框架SQL查询未返回正确的数据

时间:2015-12-02 16:36:28

标签: c# asp.net-mvc entity-framework linq

我正在使用EF6并使用投影进行查询。我从问here:

的问题中得到了代码

这段代码完美无缺,但是它生成了1200多行SQL,并且在第一次调用时,编译查询需要5秒以上,执行它需要300ms,这是不可接受的。你可以看到我的意思here:

我使用Glimpse来查看它生成的SQL是什么,并且有趣地注意到如果我删除注释,那么SQL只会减少200行代码。

我决定将SQL放入存储过程中,虽然它正确地返回了帖子数据,但是没有填充PostAuthor。

我仔细检查并使用Linq查询填充,但使用

_context.Posts.SqlQuery(...)

未填充PostAuthor对象。

我还仔细检查了SQL Server Management Studio中的原始SQL查询,并且正在返回所有数据,它只是在返回时没有被填充。

我错过了什么吗?这是一个已知的问题吗?

1 个答案:

答案 0 :(得分:0)

请改为尝试:

var allposts = _context.Posts
  .Include(p=>p.Comments)
  .Include(p=>p.Attachments)
  .Where(t => t.PostAuthor.Id == postAuthorId)
  .ToList();

当然,发布SQL有助于确定是否有更好的方法来检索数据。