3

我有这样的事情:

var tmp =_forumsDb.Threads
.Where(t => t.Id == variable)
.Select(t => new { Thread = t, Posts = t.Posts.Take(1) })
.Single();

现在,我希望tmp.Thread.Posts.Count();是 1,但它会占用我在数据库中的所有帖子。是否可以使用需要明确数量的帖子的投影,在单个查询中进行而不关闭延迟加载?

编辑:我尝试做这样的事情,但它也不起作用:

var tmp =_forumsDb.Threads
.Where(t => t.Id == variable)
.Select(t => new { Thread = t, Posts = t.Posts.OrderBy(p => p.DateCreated).Take(1) })
.Select(t => t.Thread)
.Single();
4

1 回答 1

2

tmp.Thread.Posts是为其配置了延迟加载的导航属性。由于尚未加载,因此访问它会加载所有剩余的帖子。

tmp.Posts不是导航属性。那是您应该能够在不触发另一个查询的情况下访问的那个。

于 2012-09-12T16:31:49.650 回答