This should directly support cache invalidation through a tag. Each repository gets a key with the current version. The version is one part ofthe actual cache datas key.
A new cache key version is generated:
1. When none is found during find operation
2. When any write operation is done.
For transaction consisteny the rollback operation in UoW needs to reset cache keys and only after a succesful commit operation the new cache key version should be set.
We may need begin, commit, rollback events in UoW for this.