【问题标题】:Lazy loading with EF 5 Database first首先使用 EF 5 数据库进行延迟加载
【发布时间】:2013-09-25 21:21:04
【问题描述】:

我的数据库中有三个表:

  • 发布
  • 作者
  • 标签

我正在使用带有 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()

我以为 Author 会是 null 并且 Tags 会是空的,因为我没有使用 Include() 来使用急切加载。但是如果我调试,我发现 Author 不是 null 并且 Tags 有两个元素。我不明白为什么。

在标签实体中,我有一个导航属性来获取所有获得该标签的帖子。看起来正在填充所有数据...但是我在测试页面时没有注意到任何性能问题,它加载非常快。

也许这不是一个错误……我只是错过了什么吗?

【问题讨论】:

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


    【解决方案1】:

    请查看answer:

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

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

    希望这会有所帮助。

    【讨论】:

    • 谢谢,我知道我错过了一些东西。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多