首先使用EF 5数据库进行延迟加载

时间:2013-09-25 21:21:04

标签: c# entity-framework asp.net-mvc-4 lazy-loading ef-database-first

我的数据库中有三个表:

  • 作者
  • 标签

我正在使用带有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的所有帖子。它看起来像是在填充所有数据......但是当我测试页面时,我没有注意到任何性能问题,它加载速度非常快。

也许这不是错误......我只是错过了什么?

1 个答案:

答案 0 :(得分:4)

请检查此answer

  

延迟加载意味着您​​将自动加载实体   第一次访问集合或导航属性,这将发生   透明地,好像它们总是加载父对象。

     

当您指定属性时,使用“include”按需加载   想要查询。

希望这有帮助。