How to keep a specific module on -dev version (with patches) on a Drupal8 site managed by composer?
Firstly, the 8.x- is not part of the composer version; the correct version is 1.x-dev or dev-1.x.

However, composer require drupal/search_api_solr:1.x-dev always updates to the latest revision on the dev branch. If you want to stay on a specific commit and prevent updates entirely, use something like composer require drupal/search_api_solr:1.x-dev#46e16862.