如何防止Entity Framework加载所有子对象

Cha*_*raf 5 .net c# linq asp.net-mvc entity-framework

我目前正在使用Entity Framework使用ASP.NET MVC构建论坛我有3个主要模型[类别] 1 - *[论坛] 1 - *[发布]

如果我有5个类别,每个有4个论坛,每个论坛有1000个帖子,我想只显示类别,当我这样做,这意味着我也选择了20000个帖子?

因为每个Category对象都有一个List <'Forum'>,并且 由于映射和关系,每个Forum对象都有List <'Post'>

Nic*_*las 5

您可以使用延迟加载来防止检索子对象。看这里。默认情况下应启用延迟加载。

延迟加载是在第一次访问引用实体或实体的属性时自动从数据库加载实体或实体集合的过程。

使用 POCO 实体类型时,延迟加载是通过创建派生代理类型的实例,然后重写虚拟属性以添加加载挂钩来实现的。例如,当使用下面定义的 Blog 实体类时,相关的 Posts 将在第一次访问 Posts 导航属性时加载:

public virtual ICollection<Post> Posts { get; set; } 
Run Code Online (Sandbox Code Playgroud)

您可以使用 来实现特定的预加载.Include()。例如:

db.Forums.Include(i => i.Posts)
Run Code Online (Sandbox Code Playgroud)