我的数据库中有三个表:
- 发布
- 作者
- 标签
我正在使用 ASP.NET MVC 4 和 EF 5,我的 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.ToList()
我以为作者将为空,标签将为空,因为我没有使用Include()
来使用预先加载。但是如果我调试,我发现作者不是空的,标签有两个元素。我不明白为什么。
在标签实体中,我得到了一个导航属性来获取获得该标签的所有帖子。看起来正在填充所有数据...但是当我测试页面时我没有注意到任何性能问题,它的加载速度非常快。
也许这不是错误...我只是错过了什么吗?
请检查此答案:
延迟加载意味着实体将在 首次访问集合或导航属性,这将发生 透明地,就好像它们总是加载父对象一样。
使用"include"是按需加载,当您指定属性时 想要查询。
希望这有帮助。