示例#1
0
        /// <summary>
        /// Retrieves the data from Azure Storage using <see cref="Collection"/>.
        /// </summary>
        public virtual IEnumerable <TData> GetByKey()
        {
            // Create the table query.
            var rangeQuery = Collection.Where
                             (
                TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, StorageStore <object, object> .GetSafeStorageKey(typeof(TCollectionItemData).FullName))
                             );

            return(ReadableSource.ExecuteQuery(rangeQuery));
        }
        /// <summary>
        /// Retrieves the data from Azure Storage using <see cref="TableStorageStore{TData,TCollectionItemData}.Collection"/>.
        /// </summary>
        public override IEnumerable <EntityTableEntity <TData> > GetByKey()
        {
            // Create the table query.
            var rangeQuery = Collection.Where
                             (
                TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, StorageStore <object, object> .GetSafeStorageKey(typeof(TData).FullName))
                             );

            IEnumerable <EntityTableEntity <TData> > results = ReadableSource.ExecuteQuery(rangeQuery);

            return(results);
        }
示例#3
0
        /// <summary>
        /// Retrieves the data from Azure Storage using <see cref="Collection"/>.
        /// </summary>
        public virtual TData GetByKeyAndRow(Guid rsn)
        {
            // Create the table query.
            var rangeQuery = Collection.Where
                             (
                TableQuery.CombineFilters
                (
                    TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, StorageStore <object, object> .GetSafeStorageKey(typeof(TCollectionItemData).FullName)),
                    TableOperators.And,
                    TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, StorageStore <object, object> .GetSafeStorageKey(rsn.ToString("N")))
                )
                             );

            return(ReadableSource.ExecuteQuery(rangeQuery).Single());
        }
示例#4
0
        public override EntityTableEntity <TData> GetByKeyAndRow(Guid rsn)
        {
            TableOperation searchQuery = TableOperation.Retrieve <DynamicTableEntity>(typeof(TData).FullName, rsn.ToString("N"));

            TableResult searchResult = ReadableSource.Execute(searchQuery);

            var dynamicTableEntity = searchResult.Result as DynamicTableEntity;

            if (dynamicTableEntity == null)
            {
                return(base.GetByKeyAndRow(rsn));
            }

            //Convert the DynamicTableEntity back to original complex object.
            TData result = EntityPropertyConverter.ConvertBack <TData>(dynamicTableEntity.Properties, new OperationContext());

            return(new EntityTableEntity <TData>(result));
        }
示例#5
0
        /// <summary>
        /// Opens stream for reading from a block blob.
        /// </summary>
        protected virtual IEnumerable <Stream> OpenStreamsForReading(Func <CloudBlockBlob, bool> predicate = null, string blobPrefix = null, string folderName = null)
        {
            IEnumerable <IListBlobItem> blobs;

            if (!string.IsNullOrWhiteSpace(folderName))
            {
                CloudBlobDirectory container = ReadableSource.GetDirectoryReference(folderName);
                blobs = container.ListBlobs(true);
            }
            else
            {
                blobs = ReadableSource.ListBlobs(blobPrefix, true);
            }
            IEnumerable <CloudBlockBlob> query = blobs
                                                 .Where(x => x is CloudBlockBlob)
                                                 .Cast <CloudBlockBlob>();

            if (predicate != null)
            {
                query = query.Where(predicate);
            }
            return(query.Select(x => x.OpenRead()));
        }