对象引用没有设置,而SQL管理器说它是

问题描述:

最近我运行在一个奇怪的NullReferenceException。它偶尔会弹出,为什么它很难为我调试。今天又发生了,我想现在修复它,我有错误。对象引用没有设置,而SQL管理器说它是

我有以下设置:

相关代码的asp.net观点:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<WerkStageNu.Profiles>" %> 
<%@ Import Namespace="WerkStageNu.Helpers" %> 

<div class="listing"> 
    <div class="content"> 


     <h3><%=Html.ActionLink(Model.Persons.UserName, "Details", new { id = Model.ID })%></h3> 

并运行这个它告诉我,Model.Persons为空给下面的错误,而当模型本身加载了来自(SQL)数据库的数据。我正在使用ADO.net实体。检索配置文件而不是使用模型会导致相同的错误。

<%=Html.ActionLink(WerkStageNu.Models.Repository.Instance.GetProfileByID(Model.ID) 
.Persons.UserName, "Details", new { id = Model.ID })%> 

没有做任何好处。

一些错误图像:

debug mode http://www.bastijn.nl/zooi/model_persons.png

stack trace http://www.bastijn.nl/zooi/stacktrace.png

到目前为止,这似乎是一个正常的错误,但是当我检查我的数据库请求背后,我发现这个字段填写,而且链接是正确的。 SQL Manager屏幕显示这样的信息:

概况表:

profiles DB http://www.bastijn.nl/zooi/profiles_sql.png

个人表:

persons DB http://www.bastijn.nl/zooi/persons_sql.png

正如人们所看到的所有PersonIDs被设置成通常的所有链接应该加载?有时候情况就是这样,但是有时候这个空引用会从不知所云的地方弹出来。我忘记了什么吗?我应该手动加载一些东西?

//编辑

我注意到

<%Model.PersonsReference.Load(); Model.EmploymentsReference.Load(); %> 解决了这个问题,问题是为什么我在这里需要它,而不是在我的其他观点中使用相同的方法?

它可能与lazy loadingPersons集合有关。

+0

看起来很像它,谢谢你的链接,没有看到那个。 – bastijn 2009-12-08 10:42:25

我注意到

<% Model.PersonsReference.Load(); Model.EmploymentsReference.Load(); %> 

修复了这个问题,这个问题就是为什么我需要在这里,而不是整个的我的看法使用相同的方法的休息吗?