title: MVC3 how to update stock of multiple items
body: <p>I am following this tutorial  <a href="http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-9" rel="nofollow">http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-9</a></p>
  
  <p>(not exactly same as this) </p>
  
  <p>I am trying to control the stock.</p>
  
  <p>When order created, I want to deduct amount of stock (Stock - count(number of quantity));</p>
  
  <p>I have 3 tables; Order, OrderDetails, and Product.</p>
  
  <p>After creating OrderDetails list, I want to modify the stock of product.</p>
  
  <p>I don't know how to modify stock? Can I use like 'db.OrderDetails.Add(orderDetail)'?</p>
  
  <p>Could you help me? I am giving you some coding.</p>
  
  <p>Please advice me. Thanks!</p>
  
  <pre><code>public int CreateOrder(Order order)
      {
          decimal orderTotal = 0;
  
          var cartItems = GetCartItems();
  
          // Iterate over the items in the cart, adding the order details for each
          foreach (var item in cartItems)
          {
              var orderDetail = new OrderDetails
              {
                  productId = item.productId,
                  orderId = order.orderId,
                  unitPrice = item.priceValue,
                  rentalPeriod = item.rentalPeriod,
                  startDate = item.dateCreated.AddDays(2),
                  endDate = item.dateCreated.AddDays(2 + item.rentalPeriod),
                  quantity = item.count
              };
  
  
              var productStock = new Product
              {   //Is it right coding??
                  stock = item.Product.stock - item.count
              };
  
              // Set the order total of the shopping cart
              orderTotal += (item.count * item.priceValue);
  
              //Could be we need some coding here for stock control.
              db.OrderDetails.Add(orderDetail);
  
              db.SaveChanges();
          }
  
          // Set the order's total to the orderTotal count
          order.total = orderTotal;
  
          // Save the order
          db.SaveChanges();
  
          // Empty the shopping cart
          EmptyCart();
  
          // Return the OrderId as the confirmation number
          return order.orderId;
      }
  </code></pre>
  
  <p>ViewModels</p>
  
  <pre><code>public class ShoppingCartViewModel
  {
      public List&lt;Cart&gt; CartItems { get; set; }
      public decimal CartTotal { get; set; }
  }
  </code></pre>
  
  <p>OrderDetails</p>
  
  <pre><code>public class OrderDetails
  {
      [Key] public int orderDetailId { get; set; }
      public int orderId { get; set; }
      public int productId { get; set; }
      public int quantity { get; set; }
      public decimal unitPrice { get; set; }
      public int rentalPeriod { get; set; }
      public DateTime startDate { get; set; }
      public DateTime endDate { get; set; }
      public virtual Product Product { get; set; }
      public virtual Order Order { get; set; }
  }
  </code></pre>
  
  <p>Order</p>
  
  <pre><code>public class Order
  {
      rentalDB db = new rentalDB();
  
      [Key] public int orderId { get; set; }
      public int customerId { get; set; }
      public decimal total { get; set; }
      public virtual Customer Customer { get; set; }
      public List&lt;OrderDetails&gt; OrderDetails { get; set; }
  }
  </code></pre>
  
  <p>Cart</p>
  
  <pre><code>public class Cart
  {
      [Key]
      public int recordId { get; set; }
      public string cartId { get; set; }
      public int productId { get; set; }
      public decimal priceValue { get; set; }
      public int count { get; set; }
      public int rentalPeriod { get; set; }
      public DateTime dateCreated { get; set; }
      public virtual Product Product { get; set; }
  }
  </code></pre>