It turns out that we can use the SaveExternalDataComponent component for this.
How this works internally I'm not sure but it seems to update everything that's passed into the model.
In our case the Change Reguest is passed into the Workflow by a Web Forms feeder project. Updating the Change Request and then using a SaveExternalDataComponent persists the changes to the database.
It all seems a bit black box to me. It'd be nice if there are a more intuative way to persist changes.