0

クラスを xml にシリアル化しようとしています。シリアライゼーションの後、statusid を更新したいと思います。最初の注文を見つけて statusId を変更できます.2番目の orderid に移動すると、あいまいな一致が見つかったというエラーが発生しました。

主な方法は次のとおりです。

 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; }

    }
4

1 に答える 1

0

同じ名前で大文字と小文字が異なる 2 つのメンバーを持つエンティティであることが判明しました。1 つはデータベースのフィールドで、もう 1 つはナビゲーション プロパティです。2つのうちの1つの名前を変更するだけで問題は解決しました。

于 2013-03-06T13:41:38.423 に答える