public virtual async Task <TEntity> Async(TKey key, Action <TEntity> updater) { var entity = await _repository.FindAsync(key); if (entity == null) { entity = _factory.CreateEmpty(key); updater(entity); await _repository.AddAsync(key, entity); return(entity); } updater(entity); await _repository.UpdateAsync(key, entity); return(entity); }