public async Task<IHttpActionResult> Put([FromODataUri] int key, Product pro)
        {
            if (!ModelState.IsValid)
                return BadRequest(ModelState);

            if (key != pro.Id)
            {
                return BadRequest();
            }

            db.Entry(pro).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {

                if(!ProdcutExists(key))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }

            return Updated(pro);
        }
        public async Task<IHttpActionResult> Post(Product pro)
        {
            if (!ModelState.IsValid)
                return BadRequest(ModelState);

            db.Products.Add(pro);
            await db.SaveChangesAsync();
            return Created(pro);
        }
        // POST odata/Products
        public HttpResponseMessage Post(Product product)
        {
            if (!ModelState.IsValid)
            {
                return Request.CreateResponse<ModelStateDictionary>(HttpStatusCode.BadRequest, ModelState);
            }

            db.Products.Add(product);
            db.SaveChanges();

            return Request.CreateResponse<Product[]>(HttpStatusCode.Created, new[] { product });
        }
        // PUT odata/Products(5)
        public HttpResponseMessage Put([FromODataUri] int key, Product product)
        {
            if (!ModelState.IsValid)
            {
                return Request.CreateResponse<ModelStateDictionary>(HttpStatusCode.BadRequest, ModelState);
            }

            db.Entry(product).State = EntityState.Modified;

            db.SaveChanges();


            return Request.CreateResponse<Product[]>(HttpStatusCode.OK, new[] { product });
        }
        // PUT odata/Products(5)
        public HttpResponseMessage PutProduct([FromODataUri] int key, Product product)
        {
            if (!ModelState.IsValid)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
            }

            if (key != product.ID)
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }

            db.Entry(product).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException ex)
            {
                return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
            }

            return Request.CreateResponse(HttpStatusCode.OK);
        }
        // POST odata/Products
        public HttpResponseMessage PostProduct(Product product)
        {
            if (ModelState.IsValid)
            {
                db.Products.Add(product);
                db.SaveChanges();

                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, product);
                response.Headers.Location = new Uri(Url.ODataLink(new EntitySetPathSegment("Product")));
                return response;
            }
            else
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
            }
        }