public int Create(ExampleEntityCreateRequest request)
        {
            int id = 0;

            /*
             *
             * // This is the plain-vanilla ADO.NET version of the dataProvider call below
             *
             * using (SqlConnection con = new SqlConnection("..."))
             * {
             *  con.Open();
             *
             *  SqlCommand cmd = con.CreateCommand();
             *  cmd.CommandText = "example_entity__create"; // #1
             *  cmd.CommandType = CommandType.StoredProcedure;
             *
             *  cmd.Parameters.AddWithValue("@stuff", request.Stuff); // #2 cmd.Parameters.AddWithValue("@thing", request.Thing);
             *  SqlParameter idParam = cmd.Parameters.Add("@id", SqlDbType.Int);
             *  idParam.Direction = ParameterDirection.Output;
             *
             *  cmd.ExecuteNonQuery();
             *
             *  id = (int)cmd.Parameters["@id"].Value; // #3
             * }
             *
             * return id;
             */

            dataProvider.ExecuteNonQuery(
                "example_entity__create", // #1
                inputParamMapper : delegate(SqlParameterCollection parameters)
            {
                /*
                 * Here's the long version of:
                 * parameters.AddWithValue("@stuff", request.Stuff);
                 *
                 * SqlParameter stuffParam;
                 * stuffParam = new SqlParameter();
                 * stuffParam.ParameterName = "@stuff";
                 * stuffParam.Value = request.Stuff;
                 * stuffParam.Direction = ParameterDirection.Input;
                 * parameters.Add(stuffParam);
                 */

                parameters.AddWithValue("@stuff", request.Stuff);     // #2
                parameters.AddWithValue("@thing", request.Thing);

                SqlParameter idParam = parameters.Add("@id", SqlDbType.Int);
                idParam.Direction    = ParameterDirection.Output;
            },
                returnParameters : delegate(SqlParameterCollection parameters)
            {
                id = (int)parameters["@id"].Value;     // #3

                // do NOT do this:
                // int.TryParse(parameters["@id"].Value.ToString(), out id);
            });

            return(id);
        }
        public HttpResponseMessage Create(ExampleEntityCreateRequest req)
        {
            if (req == null)
            {
                ModelState.AddModelError("", "Missing body data.");
            }

            if (!ModelState.IsValid)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }

            // Declare a variable of type "ItemResponse of int" named itemResponse,
            // then, create a new ItemResponse of int and put it into that variable.

            ItemResponse <int> itemResponse = new ItemResponse <int>();

            itemResponse.Item = exampleEntityService.Create(req);

            return(Request.CreateResponse(HttpStatusCode.Created, itemResponse));
        }