public IHttpActionResult PostProduct(ProductViewModel product_view_model)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            Category category = db.Categories.Find(product_view_model.Category_Id);
            if (category==null)
            {
                return BadRequest("找不到對應的產品分類: " + product_view_model.Category_Id);
            }
            Product product = new Product { Name = product_view_model.Name, Price = product_view_model.Price, Category = category };
            db.Products.Add(product);
            db.SaveChanges();

            return CreatedAtRoute("DefaultApi", new { id = product.Id }, ToViewModel(product));
        }
        public IHttpActionResult PutProduct(int id, ProductViewModel product_view_model)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            if (id != product_view_model.Id)
            {
                return BadRequest();
            }

            Category category = db.Categories.Find(product_view_model.Category_Id);
            if (category == null)
            {
                return BadRequest("找不到對應的產品分類: " + product_view_model.Category_Id);
            }

            //把資料庫中的那筆資料讀出來
            Product product_db = db.Products.Find(id);
            if (product_db == null)
            {
                return ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NotFound, "這筆資料已被刪除!"));
            }
            else
            {
                try
                {
                    product_db.Name = product_view_model.Name;
                    product_db.Price = product_view_model.Price;
                    product_db.Category = category;
                    db.Entry(product_db).OriginalValues["Timestamp"] = Convert.FromBase64String(product_view_model.TimestampString);
                    db.SaveChanges();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ProductExists(id))
                        throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, "這筆資料已被刪除!"));
                    else
                        throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Conflict, "這筆資料已被其他人修改!"));
                }
            }

            return Ok(ToViewModel(product_db));
        }