static async Task <StoredProcedureExecutionResult <int> > runSqlProcedure()
        {
            try
            {
                using (var connection = new SqlConnection(connectionString))
                {
                    /*
                     * var parameters = new
                     * {
                     *  Name = "state10",
                     *  Value = 80,
                     *  DataTypeId = 1,
                     * };
                     */
                    var parameters = new StoredProcedureParameters(new
                    {
                        Name       = "state10",
                        Value      = 80,
                        DataTypeId = 1,
                    });

                    await connection.OpenAsync();

                    var output = await connection
                                 .QueryAsync(
                        "[dbo].[InsertIntoEnumValue]",
                        param : parameters,
                        commandType : CommandType.StoredProcedure);

                    /*
                     * int result = (int)output.AsList().FirstOrDefault().NewEnumId;
                     */
                    var result = (new StoredProcedureExecutionResultBuilder())
                                 .retrieveOutputParameters(parameters)
                                 .build(() => (int)output.AsList().FirstOrDefault().NewEnumId);

                    return(result);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 public StoredProcedureExecutionResultBuilder retrieveOutputParameters(StoredProcedureParameters parameters)
 {
     errorCode    = parameters.getErrorCode();
     errorMessage = parameters.getErrorMessage();
     return(this);
 }