我的数据库中有三个表:
我正在使用带有EF 5的ASP.NET MVC 4和我的Post模型(自动生成)看起来像这样:
public partial class BlogPost
{
public BlogPost()
{
this.Tags = new HashSet<Tag>();
}
...
public virtual Author Author { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
}
我的上下文和dbSet是定义的。我正试图通过此查询获取数据库中的所有帖子
dbSet.ToList()
我认为作者将为null并且标签将为空,因为我没有使用Include()
来使用预先加载。但是如果我调试,我发现Author不是null,而Tags有两个元素。我不明白为什么。
在Tag实体中,我获得了一个导航属性,以获取获得该Tag的所有帖子。它看起来像是在填充所有数据......但是当我测试页面时,我没有注意到任何性能问题,它加载速度非常快。
也许这不是错误......我只是错过了什么?
答案 0 :(得分:4)
请检查此answer:
延迟加载意味着您将自动加载实体 第一次访问集合或导航属性,这将发生 透明地,好像它们总是加载父对象。
当您指定属性时,使用“include”按需加载 想要查询。
希望这有帮助。