2013-03-05 40 views
0

我嘗試將一個類序列化爲xml。在序列化之後,我想更新statusid。 我能夠找到第一個訂單並改變statusId,當去第二個orderid時,這裏是我遇到模糊匹配發現錯誤的地方。dbcontext throwAmbiguousMatchException

這裏的主要方法:

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(); 
      } 
在OrderRepository.cs

 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的多個匹配項。您的底層數據存儲是什麼? – 2013-03-05 12:50:43

+0

我有雙重檢查數據,所有單個條目。當我只查找第二個時,它是完全正確的 – Kiddo 2013-03-05 13:21:59

+0

你可以發佈堆棧跟蹤嗎? – Pawel 2013-03-05 19:26:05

回答

0

變成是一個實體有兩個成員相同的名稱和不同的外殼。一個是來自數據庫的字段,另一個是導航屬性。只是重命名其中一個解決了問題。