А если нет записи типа «Корзина», это вызовет ошибку стоимости;Вы можете использовать этот код:
public class Order{
public int OrderID { get; set; }
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
[DisplayName("When")]
public DateTime DateOccurred { get; set; }
public virtual ICollection<Basket> Baskets { get; set; }
private decimal? _total;
public decimal Total{
get{
if(_total.HasValue)
return _total.Value;
if(this.Baskets == null){
// retrive Baskets from db, for example:
this.Baskets = MyRepository.GetBasketsFor(this.OrderId);
}
_total = (Baskets.Sum(b => (decimal?) b.Price)) ?? 0;
return _total.Value;
}
}
}
но таким образом, вы должны получить все корзины из БД для расчета суммы !!!Вы можете создать Repository-метод для этого;например:
private decimal? _total;
public decimal Total{
get{
if(!_total.HasValue)
_total = (MyRepository.GetBasketsTotalFor(this.OrderId)) ?? 0;
return _total.Value;
}
}
и
public class MyRepository{
static public decimal? GetBasketsTotalFor(int orderId){
var total = context.Baskets
.Where(b => b.OrderId == orderId)
.Sum(b => (decimal?) b.Price);
return total;
}
}
Удачи.