这是微软的实体MyEntity的动作细节的脚手架代码:
public async Task<ActionResult> Details(Guid? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
MyEntity myEntity = await db.MyEntities.FindAsync(id);
if (myEntity == null)
{
return HttpNotFound();
}
return View(myEntity);
}
现在假设我想在details.cshtml中显示该实体所有者的名称,如果我编写以下代码:
<dt>
Owner
</dt>
<dd>
@Html.DisplayFor(m => m.User.FullName)
</dd>
即使尝试访问null
以触发延迟加载,用户也会显示为Model.User
。
修改:按要求添加模型
public class MyEntity
{
public Guid? Id { get; set; }
public string Name { get; set; }
public ApplicationUser User { get; set; }
}
答案 0 :(得分:1)
将.Include(“User”)添加到您的linq查询。
答案 1 :(得分:0)
我遇到了同样的问题,马特的回答让我走上了类似的道路。我以为我会分享我发现的东西。
This article表示延迟加载与Async模式不太匹配。很高兴知道。
有了这个,我调查了eager loading。我在那里找到了答案。
MyEntity myEntity = await db.MyEntities.Where(m => m.Id == id)
.Include(m => m.User)
.FirstOrDefaultAsync();
希望能帮到别人!