2013-03-05 4 views
0

나는 클래스를 xml로 직렬화하려고 시도한다. 직렬화 후, 나는 statusid를 업데이 트하고 싶습니다. 첫 번째 주문을 찾아 statusId를 변경할 수 있습니다. 두 번째 orderid로 이동하면 여기 모호한 일치가 발생하여 오류가 발생했습니다. 여기 dbcontext throwAmbiguousMatchException

의 주요 방법 다음 OrderRepository.cs에

using (var Context = new Context()) 
      { 


       var orderRepo = new OrderRepository(Context); 

       foreach (var orderId in orderIds) 
       { 
        var order = orderRepo.Find(orderId); 
        order.orderStatusID = 5; 

       } 
       orderRepo.Save(); 
      } 

 public Order Find(int id) 
      { 
       return _context.Orders.Find(id); 
      } 

    public void Save() 
     { 

      try 
      { 
       _context.SaveChanges(); 
      } 
      catch (Exception ex) 
      { 

       _logger.Error(ex); 
      } 

     } 

order.cs :

[XmlRoot("Orders")] 
    [NotMapped] 
    public class OrderCollection 
    { 

     public OrderCollection() { Orders = new List<Order>(); } 

     [XmlElement("Order")] 
     [NotMapped] 
     public List<Order> Orders { get; set; } 
    } 

    [Serializable()] 
    public class Order 
    { 

     public int id { get; set; } 
     [XmlElement("date")] 
     public DateTime createdDate 
     { 
      get 
      { 
       return (_createdDate == default(DateTime)) 
        ? DateTime.Now 
        : _createdDate; 
      } 

      set { _createdDate = value; } 
     } 
     private DateTime _createdDate = default(DateTime); 

     public string firstName { get; set; } 

     public string lastName { get; set; } 

     [XmlIgnore] 
     public int orderStatusID { get; set; } 

    } 
+0

코드에서 지정된 주문 ID에 대해 여러 개의 일치 항목을 찾는 것처럼 보입니다. 기본 데이터 저장소 란 무엇입니까? –

+0

나는 데이터, 모든 단일 항목을 두 번 확인했습니다. 그것은 두 번째 하나만 찾아 볼 때 완전히 괜찮습니다. – Kiddo

+0

스택 추적을 게시 할 수 있습니까? – Pawel

답변

0
기업이 두 멤버를 한 것으로 판명

같은 이름과 다른 케이스. 하나는 데이터베이스의 필드 였고 하나는 탐색 속성이었습니다. 두 개 중 하나의 이름을 바꾸면 문제가 해결됩니다.