title: MusicStore 'System.Data.Objects.ObjectSet<....>' does not contain a definition for 'Add' and no extension method 'Add' accepting a first argument
body: <p>I'm following the MusicStore tutorial I'm already on the <a href="http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-8" rel="nofollow">Part 8  of the tutoria</a>l. I got this error when I tried to add the ShoppingCart class.. I tried to google for a possible solution but failed to find a clean one T_T .. based on my research I'm getting this error because I'm using edmx which is database first instead of code first on the tutorial.</p>
  
  <p>I had this codes added and is having an error on Add() and Remove()</p>
  
  <pre><code>namespace Project.Models 
  { 
      public partial class ShoppingCart 
      {  
          ProjectEntities db = new ProjectEntities();  
  
          string ShoppingCartId { get; set; }
  
          public const string CartSessionKey = "cart_ID";
          public static ShoppingCart GetCart(HttpContextBase context)
          {
              var cart = new ShoppingCart();
              cart.ShoppingCartId = cart.GetCartId(context);
              return cart;
          }
          // Helper method to simplify shopping cart calls
          public static ShoppingCart GetCart(Controller controller)
          {
              return GetCart(controller.HttpContext);
          }
          public void AddToCart(Product product)
          {
              // Get the matching cart and album instances
              var cartItem = db.Carts.SingleOrDefault(c =&gt; c.cart_ID == ShoppingCartId &amp;&amp; c.product_ID == product.product_ID);
  
              if (cartItem == null)
              {
                  // Create a new cart item if no cart item exists
                  cartItem = new Cart
                  {
                      product_ID = product.product_ID,
                      cart_ID = ShoppingCartId,
                      Count = 1,
                      DateCreated = DateTime.Now
                  };
                  db.Carts.Add(cartItem);
              }
              else
              {
                  // If the item does exist in the cart,  then add one to the quantity
                  cartItem.Count++;
              }
              // Save changes
              db.SaveChanges();
          }
          public int RemoveFromCart(int id)
          {
              // Get the cart
              var cartItem = db.Carts.Single(cart =&gt; cart.cart_ID == ShoppingCartId &amp;&amp; cart.record_ID == id);
  
              int itemCount = 0;
  
              if (cartItem != null)
              {
                  if (cartItem.Count &gt; 1)
                  {
                      cartItem.Count--;
                      itemCount = cartItem.Count;
                  }
                  else
                  {
                      db.Carts.Remove(cartItem);
                  }
                  // Save changes
                  db.SaveChanges();
              }
              return itemCount;
          }
          public void EmptyCart()
          {
              var cartItems = db.Carts.Where(cart =&gt; cart.cart_ID == ShoppingCartId);
  
              foreach (var cartItem in cartItems)
              {
                  db.Carts.Remove(cartItem);
              }
              // Save changes
              db.SaveChanges();
          }
          public List&lt;Cart&gt; GetCartItems()
          {
              return db.Carts.Where(cart =&gt; cart.cart_ID == ShoppingCartId).ToList();
          }
          public int GetCount()
          {
              // Get the count of each item in the cart and sum them up
              int? count = (from cartItems in db.Carts
                            where cartItems.cart_ID == ShoppingCartId
                            select (int?)cartItems.Count).Sum();
              // Return 0 if all entries are null
              return count ?? 0;
          }
          public decimal GetTotal()
          {
              // Multiply album price by count of that album to get 
              // the current price for each of those albums in the cart
              // sum all album price totals to get the cart total
              decimal? total = (from cartItems in db.Carts
                                where cartItems.cart_ID == ShoppingCartId
                                select (int?)cartItems.Count * cartItems.Product.Price).Sum();
  
              return total ?? decimal.Zero;
          }
          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 OrderDetail
                  {
                      product_ID = item.product_ID,
                      order_ID = order.order_ID,
                      UnitPrice = item.Product.Price,
                      Quantity = item.Count
                  };
                  // Set the order total of the shopping cart
                  orderTotal += (item.Count * item.Product.Price);
  
                  db.OrderDetails.Add(orderDetail);
  
              }
              // 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.order_ID;
          }
          // We're using HttpContextBase to allow access to cookies.
          public string GetCartId(HttpContextBase context)
          {
              if (context.Session[CartSessionKey] == null)
              {
                  if (!string.IsNullOrWhiteSpace(context.User.Identity.Name))
                  {
                      context.Session[CartSessionKey] = context.User.Identity.Name;
                  }
                  else
                  {
                      // Generate a new random GUID using System.Guid class
                      Guid tempCartId = Guid.NewGuid();
                      // Send tempCartId back to client as a cookie
                      context.Session[CartSessionKey] = tempCartId.ToString();
                  }
              }
              return context.Session[CartSessionKey].ToString();
          }
          // When a user has logged in, migrate their shopping cart to
          // be associated with their username
          public void MigrateCart(string userName)
          {
              var shoppingCart = db.Carts.Where(c =&gt; c.cart_ID == ShoppingCartId);
              foreach (Cart item in shoppingCart)
              {
                  item.cart_ID = userName;
              }
              db.SaveChanges();
          }
      }
  }  
  </code></pre>
  
  <p>I'm a starter in MVC and hopefully anyone would help me to resolve this.</p>