【发布时间】:2016-09-26 03:33:37
【问题描述】:
我在尝试从导航属性中获取数据时收到NullReferenceException。
我正在尝试将来自导航属性“EventImage”的数据显示为 JSon。即使元素在属性内部并且引用了所有内容,我也会收到空引用异常。我已经查询了数据库并且得到了预期的结果,但是当我调用控制器的 [get] 操作方法时,只会出现空引用异常。我猜即使没有合适的元素,并且由于一对零或一对一的关系,我应该实现 'EventImage : null' 作为 JSon 结果。
领域模型:
public class EventDetail
{
[DatabaseGenerated(DatabaseGeneratedOption.None), Key, ForeignKey("Event")]
public int EventDetailId { get; set; }
[DisplayFormat(NullDisplayText = "No information")]
public string EventLocalization { get; set; }
[DataType(DataType.Date),
DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true,
NullDisplayText = "No information")]
public DateTime? EventDate { get; set; }
[DisplayFormat(NullDisplayText = "No information")]
public string EventDescription { get; set; }
public virtual EventImage EventImage { get; set; }
public virtual Event Event { get; set; }
public virtual ICollection<EventPrice> EventPrices { get; set; }
}
public class EventImage
{
[DatabaseGenerated(DatabaseGeneratedOption.None), Key, ForeignKey("EventDetail")]
public int EventImageId { get; set; }
public string EventImageBase64 { get; set; }
public virtual EventDetail EventDetail { get; set; }
}
逻辑模型:
public class SingleEventDetail
{
public int EventDetailId { get; set; }
public string EventLocalization { get; set; }
public DateTime? EventDate { get; set; }
public string EventDescription { get; set; }
public string EventImage { get; set; }
}
public class EventImage
{
public int EventImageId { get; set; }
public string EventImageBase64 { get; set; }
}
我在控制器内部调用的方法
public override SingleEventDetail GetById(int id)
{
var eventDetail = _eventDetailRepository.GetAll().Select(e => new SingleEventDetail
{
EventDetailId = e.EventDetailId,
EventDate = e.EventDate,
EventLocalization = e.EventLocalization,
EventDescription = e.EventDescription,
EventPrices =
_eventDetailRepository.GetById(id)
.EventPrices.Select(ep => new EventPriceForSingleEventDetail
{
Amount = ep.Amount,
Currency = ep.Currency,
IsFullPrice = ep.IsFullPrice
}).ToList(),
EventImage = e.EventImage.EventImageBase64
}).SingleOrDefault(e => e.EventDetailId == id);
return eventDetail;
}
_eventDetailRepository.GetAll()
public IEnumerable<EventDetail> GetAll()
{
return _context.EventDetail.ToList();
}
_eventDetailRepository.GetById(int id)
public EventDetail GetById(int id)
{
return _context.EventDetail.ToList().SingleOrDefault(c => c.EventDetailId == id);
}
【问题讨论】:
标签: asp.net asp.net-web-api nullreferenceexception