为什么延迟加载在剃刀视图(cshtml文件)中不起作用?

时间:2012-02-25 06:30:06

标签: asp.net-mvc-3 razor entity-framework-4.1 ef-code-first lazy-loading

我在cshtml文件中写下以下语句: -

@{
string categoryName = string.Format("{0}->{1}", label.Category.Parent.Name,
label.Category.Name);
@categoryName
}

并获得例外Object reference null

另一方面,同样适用于Controller.cs文件和即时窗口。我知道它与延迟加载有关。

它背后是否有任何概念,它在Cshtml文件中的表达式中不起作用?

由于

1 个答案:

答案 0 :(得分:5)

这不起作用,因为您的上下文在代码执行时被处理掉。应在视图中加载所有数据,因此请关闭延迟加载并使用预先加载。调用.Single()对你的结果强制加载加上使用:from o in context.Labels.Include(o => o.Parent)例如强制加载那个时候。您还可以将这些结果展平到控制器中的视图模型中。