public virtual async Task Delete(string key)
        {
            if (_softDeleteEnabled)
            {
                var entity = await Get(key);

                entity.EntityStatus    = EntityStatus.Deleted;
                entity.StatusChangedAt = DateTime.UtcNow;

                await _provider.PersistAsync(entity);
            }
            else
            {
                await _provider.DeleteAsync(key);
            }
        }