Example #1
0
        public async Task <IEnumerable <T> > GetAllEntitiesAsync <T>(StorageTablesNames tableName, string partitionKey = null)
            where T : class, ITableEntity, new()
        {
            var cloudTable = await GetTable(tableName).Value;

            TableQuery <T> tableQuery;

            if (partitionKey != null)
            {
                var filter = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey);
                tableQuery = new TableQuery <T>().Where(filter);
            }
            else
            {
                tableQuery = new TableQuery <T>();
            }

            TableContinuationToken token = null;
            var entities = new List <T>();

            do
            {
                var queryResult = await cloudTable.ExecuteQuerySegmentedAsync(tableQuery, token);

                entities.AddRange(queryResult.Results);
                token = queryResult.ContinuationToken;
            } while (token != null);

            return(entities);
        }
Example #2
0
        public async Task <int> InsertOrReplaceEntityAsync(StorageTablesNames tableName, ITableEntity tableEntity)
        {
            var cloudTable = await GetTable(tableName).Value;

            var insertOrReplaceTableOperation = TableOperation.InsertOrReplace(tableEntity);
            var tableResult = await cloudTable.ExecuteAsync(insertOrReplaceTableOperation);

            return(tableResult.HttpStatusCode);
        }
Example #3
0
        public async Task <T> GetEntityAsync <T>(StorageTablesNames tableName, string rowKey, string partitionKey) where T : class, ITableEntity
        {
            var cloudTable = await GetTable(tableName).Value;

            var retrieveTableOperation =
                TableOperation.Retrieve <T>(partitionKey, rowKey);
            var tableResult = await cloudTable.ExecuteAsync(retrieveTableOperation);

            return(tableResult?.Result as T);
        }
Example #4
0
        public async Task <IEnumerable <T> > GetAllEntitiesAsync <T>(StorageTablesNames tableName) where T : class, ITableEntity, new()
        {
            var cloudTable = await GetTable(tableName).Value;

            TableContinuationToken token = null;
            var entities = new List <T>();

            do
            {
                var queryResult = await cloudTable.ExecuteQuerySegmentedAsync(new TableQuery <T>(), token);

                entities.AddRange(queryResult.Results);
                token = queryResult.ContinuationToken;
            } while (token != null);

            return(entities);
        }
Example #5
0
        private AsyncLazy <CloudTable> GetTable(StorageTablesNames tableName)
        {
            var tableNameStr = Enum.GetName(typeof(StorageTablesNames), tableName);

            var cloudTable = new AsyncLazy <CloudTable>(async() =>
            {
                var table =
                    _client.GetTableReference(tableNameStr);
                await table.CreateIfNotExistsAsync();
                return(table);
            });

            if (!_tables.ContainsKey(tableNameStr))
            {
                _tables[tableNameStr] = cloudTable;
            }

            return(_tables[tableNameStr]);
        }