这原本张贴在这里:
How to check if a lazy loading propery returns null ..但没有得到回答,可能是由于问题不是足够清晰的支持代码。 (我想删除它,但我不知道这是否会对我的张贴能力的后果)如何检查是否有延迟加载属性格式返回null(重新)
我认为这个问题具有价值,所以我重新它清晰:
下面的代码:
var itinerary = context.Itineraries
.Include(i => i.ItineraryDays.Select(id => id.Listing.Port.Country))
.Include(i => i.ItineraryStartDates)
.Where(i => i.Id == Id).FirstOrDefault();
将数据传送给视图,其抛出异常“未设置为一个对象的实例对象引用”,在下面的代码**:
@foreach (var d in Model.ItineraryDays)
{
<tr>
<td>
@Html.DisplayFor(model => d.DayPlus1)
</td>
<td>
@Html.ActionLink(d.Listing.Name, "Details", "Port", new { Id = d.ListingId }, null)
</td>
<td>
@if (d.Listing != null) **
{
//
}
一些POIN TS:
- d.Listing总是有一个值,永远不能为null
- d.Listing.Port可以返回一个空
- 异常,只有当d.Listing.Port为空时
谁能告诉我为什么抛出异常吗?
UPDATE 刚刚发现,我的代码确实,在某些情况下,处理空值未抛出异常,但不是在所有情况下。例如1)良好2)异常
1) @Html.DisplayFor(model => d.Listing.Port.Country.Name)
2) @Html.ActionLink(d.Listing.Port.Country.Name, "Details", "Country", new { Id = d.Listing.Port.Country.Id }, null)
问候,盖伊
这可能是'D'是空。显示更多代码,以便我们看到'd'。 – haim770 2014-08-27 08:57:02
你不应该创建一个重复的问题,你应该做的是改善这个问题,它会转到首页,请阅读[帮助中心](http://stackoverflow.com/help/no-one-answers) – 2014-08-27 09:00:10
@Yuliam。我不确定如何去解决这个问题,因为原来的帖子留下了评论。重新配置的职位明显不同,这意味着这些职位不会与变化挂钩,并造成混乱。将来我会尝试改进和重新发布,以最大限度地减少这种“断开连接”。 – 2014-08-27 11:45:25