The existing concurrency control mechanisms in Aurelius are great but still can't allow for changes to different columns of the same record without also allowing a last-write-wins scenario.
I'd like to propose introducing an optional, alternative mechanism that allows for the merging of different changes to the same record. Using the entity versioning functionality as a basepoint: instead of requiring and maintaining a Version column and checking that it's current DB value still matches the value that was previously loaded, simply check that the DB values for the columns being changed still contain the values that were previously loaded.
I acknowledge that this is unlikely to be as bulletproof as the entity versioning mechanism out-of-the-box since such checks may be impractical for BLOB data, but an appropriately-designed system could mitigate this (e.g. - give each BLOB column it's own Version-like column) and greatly benefit by raising far fewer concurrency control exceptions.
This would also suppress potential "red-herring" exceptions where data was changed from A to B to A: the Version will have changed but the record is effectively the same before and after.