Example #1
0
        /// <summary>
        /// Gets the globally unique value.
        /// </summary>
        /// <param name="dataSetName">Name of the data set.</param>
        /// <param name="uniqueValue">The unique value.</param>
        /// <param name="skipCache">if set to <c>true</c> [skip cache].</param>
        /// <returns>GloballyUniqueValue.</returns>
        public GloballyUniqueValue GetGloballyUniqueValue(string dataSetName, string uniqueValue, bool skipCache = false)
        {
            if (!skipCache)
            {
                var cachedUniqueValue = AzureCache.Get(dataSetName + "-" + uniqueValue) as CacheGloballyUniqueValue;
                if (cachedUniqueValue == null)
                {
                    var returnUniqueValue =
                        _serviceContext.uniqueValues
                        .Where(c => c.PartitionKey == dataSetName &&
                               c.RowKey == uniqueValue)
                        .Select(c => c)
                        .FirstOrDefault();

                    if (returnUniqueValue != null)
                    {
                        cachedUniqueValue = returnUniqueValue.ToCacheGloballyUniqueValue();
                        AzureCache.Put(dataSetName + "-" + uniqueValue, cachedUniqueValue);
                        return(returnUniqueValue);
                    }
                    AzureCache.Put(dataSetName + "-" + uniqueValue, new CacheGloballyUniqueValue {
                        IsEmpty = true
                    });
                    return(null);
                }
                if (cachedUniqueValue.IsEmpty)
                {
                    return(null);
                }
                return(cachedUniqueValue.ToGloballyUniqueValue());
            }

            return
                (_serviceContext.uniqueValues
                 .Where(c => c.PartitionKey == dataSetName &&
                        c.RowKey == uniqueValue)
                 .Select(c => c)
                 .FirstOrDefault());
        }