SQL管理器说它时没有设置对象引用

时间:2009-12-08 10:00:15

标签: asp.net sql ado.net

最近我遇到了一个奇怪的NullReferenceException。它偶尔会弹出为什么它很难为我调试它。今天又发生了,现在我想修复它,我有错误。

我有以下设置:

带有相关代码的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为null,给出以下错误,而Model本身加载了来自(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管理器屏幕显示此信息:

个人资料表:

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

人员表:

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

正如可以看到所有PersonID设置正常所有链接都应该被加载?有时候就是这种情况,但有时这种无效的参考会突然冒出来。我忘记了什么吗?我应该手动加载吗?

//修改

我注意到了

&lt;%Model.PersonsReference.Load(); Model.EmploymentsReference.Load(); %GT; 修复了这个问题,问题是为什么我需要它,而不是在我的其余视图中使用相同的方法?

2 个答案:

答案 0 :(得分:2)

它可能与lazy loading Persons集合有关。

答案 1 :(得分:0)

我注意到了

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

解决了这个问题,问题是为什么我需要它,而不是在我的其余视图中使用相同的方法?