public async Task <DataKey> GetAsync(string name) { using (ITransaction transaction = _transactionManager.Create()) { try { if (name == MasterDataKeys.Master) { return(new DataKey { Name = MasterDataKeys.Master, Value = (await _masterKeyProvider.GetAsync()).Value }); } DataKey dataKey = await _dataKeyRepository.GetSharedAsync(name) ?? await _dataKeyRepository.GetAsync(name); if (dataKey == null) { throw new DataKeyNotFoundException(name); } transaction.Commit(); return(dataKey); } catch (Exception e) { throw new DataKeyNotFoundException(name, e); } } }