/// <summary>Gets a specific 'Product' based on it's primary key.</summary>
        public ProductResponse Get(ProductPkRequest request)
        {
            if (Validator != null)
            {
                Validator.ValidateAndThrow(new Product {
                    ProductId = request.ProductId
                }, "PkRequest");
            }

            OnBeforeGetProductPkRequest(request);
            var output = Repository.Fetch(request);

            OnAfterGetProductPkRequest(request, output);
            if (output.Result == null)
            {
                throw new HttpError(HttpStatusCode.NotFound, "NullReferenceException", "Product matching [ProductId = {0}]  does not exist".Fmt(request.ProductId));
            }
            return(output);
        }
 partial void OnAfterGetProductPkRequest(ProductPkRequest request, ProductResponse response);
 partial void OnBeforeGetProductPkRequest(ProductPkRequest request);