2014-07-09 2 views
-2

som 속성과 som 계산 된 속성이 포함 된 MVC 응용 프로그램에 모델이 있습니다. 모델에 새로운 객체를 POST하려고 할 때 계산 된 속성이 null 일 수 없다는 오류가 발생합니다. orderItemMaterialSum, orderItemTimeCount, orderItemTimeSum 당신이 본과 값을하지 말았어야 이러한 특성은 계산됩니다값 null 일 수 없음 모델 속성 MVC 5

public class OrderItem 
     { 

      public int orderItemId { get; set; } 

      [DataType(DataType.MultilineText)] 
      public string orderItemDescr { get; set; } 

      public string orderItemText { get; set; } 

      public double orderItemFixeedPrice { get; set; } 

      public virtual Order orderItemOrder { get; set; } 
      public virtual OrderItemType orderItemType { get; set; } 

      public virtual ICollection<Time> orderItemTime { get; set; } 
      public virtual ICollection<Material> orderItemMaterial { get; set; } 

      public OrderItem() 
      { } 

      public OrderItem (Order order) 
      { 
       this.orderItemOrder = order; 
      } 

      public string orderItemTypeDescr 
      { 
       get 
       { 
        return (this.orderItemType.orderItemTypeNumber.ToString() + " - " + orderItemDescr); 
       } 
      } 

      public double orderItemMaterialSum 
      { 
       get 
       { 
        return orderItemMaterial.Sum(m => m.materialItmPrice * m.materialItem); 
       } 
      } 

      public double orderItemTimeCount 
      { 
       get 
       { 
        return orderItemTime.Sum(t => t.timeItem); 
       } 
      } 

      public double orderItemTimeSum 
      { 
       get 
       { 
        return orderItemTime.Sum(t => t.timePrice * t.timeItem); 
       } 
      } 

      public double orderItemSum 
      { 
       get 
       { 
        return orderItemTimeSum + orderItemMaterialSum; 
       } 
      } 
     } 

오류 속성을 보여줍니다

여기 내 모델입니다.

문제는 내가 객체를 만들고 데이터베이스에 게시 할 때만 발생합니다.

+1

정확한 예외 + 메시지는 무엇입니까? 데이터를 유지하기 위해 ORM을 사용하는 경우 어느 것입니까? – 48klocs

답변

0

오류의 원인은 해당 속성이 두 배로되어 null 일 수 없기 때문입니다.

  • 는 방법과 재 요인 necesesary 같은 코드 에 문제의 속성을 변환 : 세 가지 방법이 문제를 해결하기 위해 떠오른다.
  • 모델이 게시 될 때 수행되는 방법 바인딩 지정
  • 사용을 바인드 속성 (권장) 단지 당신이 필요로하는 특성을 포함하는 뷰 모델을 사용 (link)
  • 모범 사례가있다

뷰 모델을 사용하십시오. 보기 모델은 다음과 같을 수 있습니다.

public class OrderItemViewModel 
{ 
    public int orderItemId { get; set; } 

    [DataType(DataType.MultilineText)] 
    public string orderItemDescr { get; set; } 

    public string orderItemText { get; set; } 

    public double orderItemFixeedPrice { get; set; } 

    public virtual Order orderItemOrder { get; set; } 

    public virtual OrderItemType orderItemType { get; set; } 

    public virtual ICollection<Time> orderItemTime { get; set; } 

    public virtual ICollection<Material> orderItemMaterial { get; set; } 

    public string orderItemTypeDescr 
    { 
     get 
     { 
      return this.orderItemType.orderItemTypeNumber.ToString() + " - " + this.orderItemDescr; 
     } 
    } 
} 

이 방법이 도움이됩니까?

+0

내 속성을 메서드로 변경하고 내 문제를 해결합니다. ViewModels 사용하려고했지만 ViewModels에 대한 자세한 내용을 읽어야 할 것 같아요 ... –

관련 문제