public async Task<HttpResponseMessage> CreateAsync(Product model)
        {
            _entityContext.Products.Add(model);
            await _entityContext.SaveChangesAsync();

            var response = Request.CreateResponse(HttpStatusCode.Created);
            var uri = Url.Link(RetrieveProductRoute, new {id = model.Id});
            response.Headers.Location = new Uri(uri);
            return response;
        }
        /// <summary>
        ///     Idempotent product creation
        /// </summary>
        /// <param name="context">The entity context</param>
        /// <param name="name">The product name</param>
        /// <param name="description">The product description</param>
        /// <param name="quantityAvailable">The product quantity available</param>
        public static Product TryAddProduct(this EntityContext context, string name, string description, int quantityAvailable)
        {
            Condition.Requires(context, "context").IsNotNull();

            var product = context.Products.FirstOrDefault(o => o.Name == name);
            if (null == product)
            {
                product = new Product(name) {Description = description, QuantityAvailable = quantityAvailable};
                context.Products.Add(product);
            }
            return product;
        }