我的模型有这个字段:
public ICollection<Guest> SecondaryGuests { get; set; }
它还具有以下get
来计算结果:
public int TotalRSVP
{
get
{
return (GuestOf == null &&
SecondaryGuests.Any() ? RSVP + SecondaryGuests.Count() : 0);
}
}
这很好用,除非我使用Create
和Edit
方法,抛出异常:
次要来宾不能为空
我能够通过添加一个include
在Edit
方法上解决此问题:
var guestToUpdate = await _context.Guests
.Include(g => g.SecondaryGuests)
.SingleOrDefaultAsync(g => g.ID == id);
但是,在Create
方法上,我不确定该怎么做才能解决这个问题。
我可以将get
字段放在ViewModel
中,但这在我的索引和详细信息视图等方面产生了大量额外的工作。我宁愿修改我的Create
方法或弄清楚如何忽略Create
方法上的get
。
不要使用Any()
(当SecondaryGuests
null
时会给出该错误),只需检查null
和Count()
:
return (GuestOf == null && SecondaryGuests != null && SecondaryGuests.Count() > 0 ?
RSVP + SecondaryGuests.Count() : 0);