/// <summary> /// Reads the cache data from the backend database. /// </summary> private void ReadCacheForSignedInUser(ITokenCacheSerializer tokenCache) { if (_inMemoryCache == null) // first time access { _inMemoryCache = GetLatestUserRecordQuery().FirstOrDefault(); } else { // retrieve last written record from the DB var lastwriteInDb = GetLatestUserRecordQuery().Select(n => n.LastWrite).FirstOrDefault(); // if the persisted copy is newer than the in-memory copy if (lastwriteInDb > _inMemoryCache.LastWrite) { // read from from storage, update in-memory copy _inMemoryCache = GetLatestUserRecordQuery().FirstOrDefault(); } } // Send data to the TokenCache instance tokenCache.DeserializeMsalV3((_inMemoryCache == null) ? null : _dataProtector.Unprotect(_inMemoryCache.CacheBits)); }