Fixed object table class
Inheritance: Microsoft.CTStore.Table
Ejemplo n.º 1
0
        /// <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();
            }
        }
Ejemplo n.º 2
0
 /// <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
     });
 }
Ejemplo n.º 3
0
 /// <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()
     });
 }
Ejemplo n.º 4
0
 /// <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));
 }