public void update(string[] args) { if (args.Length < 4 || args.Length % 2 == 1) { throw new ArgumentException("Wrong argument(s)!"); } try { int id = Int32.Parse(args[0]); using (var db = new OrderDB()) { Order oldOrder = db.orders.Include("details").SingleOrDefault(o => o.orderId == id); if (oldOrder == null) { throw new ArgumentException("Order not found!"); } else { List <OrderDetail> newDetails = new List <OrderDetail>();; for (int i = 2; i < args.Length; i += 2) { newDetails.Add(new OrderDetail(id, args[i], Int32.Parse(args[i + 1]))); } oldOrder.details.AddRange(newDetails); for (int i = 0; i < oldOrder.details.Count; i++) { if (newDetails.Contains(oldOrder.details[i])) { db.Entry(oldOrder.details[i]).State = EntityState.Added; } else { db.Entry(oldOrder.details[i]).State = EntityState.Deleted; } } db.SaveChanges(); oldOrder.clientName = args[1]; db.Entry(oldOrder).State = EntityState.Modified; db.SaveChanges(); } } Console.WriteLine("Update succeed!"); } catch (FormatException e) { throw new ArgumentException("Wrong argument(s)!", e); } }
public void add(string[] args) { if (args.Length < 3 || args.Length % 2 == 0) { throw new ArgumentException("Wrong argument(s)!"); } try { List <Order> orders = getAllOrders(); Order newOrder = new Order(args[0]); for (int i = 1; i < args.Length; i += 2) { newOrder.details.Add(new OrderDetail(newOrder.orderId, args[i], Int32.Parse(args[i + 1]))); } using (var db = new OrderDB()) { db.Entry(newOrder).State = EntityState.Added; db.SaveChanges(); } Console.WriteLine("Add succeed!"); } catch (FormatException e) { throw new ArgumentException("Wrong argument(s)!", e); } }