/// <summary> /// Query fixed object async /// </summary> /// <typeparam name="T">Object entity</typeparam> /// <param name="table">Object table</param> /// <param name="partitionKey">Partition key for entity</param> /// <param name="objectKey">Key for entity</param> /// <returns>Object entity result. Returns null if entity does not exist.</returns> public async Task <T> QueryObjectAsync <T>(FixedObjectTable table, string partitionKey, string objectKey) where T : ObjectEntity, new() { this.ValidateQueryObjectParameters(table, partitionKey, objectKey); switch (table.StorageMode) { case StorageMode.PersistentOnly: return(await this.persistentStore.QueryObjectAsync <T>(table, partitionKey, objectKey)); case StorageMode.CacheOnly: return(await this.cache.QueryObjectAsync <T>(table, partitionKey, objectKey)); case StorageMode.Default: T cacheEntity = await this.cache.QueryObjectAsync <T>(table, partitionKey, objectKey); if (this.IsCacheEntityNullOrInvalid(cacheEntity)) { T persistentEntity = await this.persistentStore.QueryObjectAsync <T>(table, partitionKey, objectKey); Operation cachingOperation = this.GetObjectCachingOperation(table, partitionKey, objectKey, cacheEntity, persistentEntity); await this.ExecuteCachingOperationAsync(cachingOperation); return(persistentEntity); } return(cacheEntity); default: throw new NotSupportedException(); } }
/// <summary> /// Delete if exists operation on fixed object table /// </summary> /// <param name="table">Fixed object table</param> /// <param name="partitionKey">Partition key for entity</param> /// <param name="objectKey">Key for entity</param> /// <returns>Table operation</returns> public static Operation DeleteIfExists(FixedObjectTable table, string partitionKey, string objectKey) { ValidateObjectTableParameters(table, partitionKey, objectKey); return(new Operation() { Table = table, OperationType = OperationType.DeleteIfExists, PartitionKey = partitionKey, Key = objectKey }); }
/// <summary> /// Insert or replace operation on fixed object table /// </summary> /// <param name="table">Fixed object table</param> /// <param name="partitionKey">Partition key for entity</param> /// <param name="objectKey">Key for entity</param> /// <param name="entity">Object entity</param> /// <returns>Table operation</returns> public static Operation InsertOrReplace(FixedObjectTable table, string partitionKey, string objectKey, ObjectEntity entity) { ValidateObjectTableParameters(table, partitionKey, objectKey, entity); return(new Operation() { Table = table, OperationType = OperationType.InsertOrReplace, PartitionKey = partitionKey, Key = objectKey, Entity = entity.Clone() }); }
/// <summary> /// Delete operation on fixed object table /// </summary> /// <param name="table">Fixed object table</param> /// <param name="partitionKey">Partition key for entity</param> /// <param name="objectKey">Key for entity</param> /// <param name="entity">Object entity</param> /// <returns>Table operation</returns> public static Operation Delete(FixedObjectTable table, string partitionKey, string objectKey, ObjectEntity entity = null) { ValidateObjectTableParameters(table, partitionKey, objectKey); return(new Operation() { Table = table, OperationType = OperationType.Delete, PartitionKey = partitionKey, Key = objectKey, Entity = entity != null?entity.Clone() : null }); }
/// <summary> /// Query fixed object async /// </summary> /// <typeparam name="T">Object entity</typeparam> /// <param name="table">Object table</param> /// <param name="partitionKey">Partition key for entity</param> /// <param name="objectKey">Key for entity</param> /// <returns>Object entity result. Returns null if entity does not exist.</returns> public async Task <T> QueryObjectAsync <T>(FixedObjectTable table, string partitionKey, string objectKey) where T : ObjectEntity, new() { return(await this.QueryObjectAsync <T>(table, partitionKey, objectKey, null)); }