public TableStorageEntry Get(string pk, string rk) { #region try try { #region preconditions if (string.IsNullOrEmpty(pk) || string.IsNullOrEmpty(rk)) { throw new Exception("Invalid parameters"); } #endregion TableQuery <TableStorageEntry> rangeQuery = new TableQuery <TableStorageEntry>().Where( TableQuery.CombineFilters( TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, pk), TableOperators.And, TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, rk))); TableStorageEntry _entry = table.ExecuteQuery(rangeQuery).FirstOrDefault <TableStorageEntry>(); return(_entry); } #endregion #region catch catch (Exception ex) { System.Diagnostics.Trace.TraceError(ex.Message); return(null); } #endregion }
public bool Track(object object2track) { #region try try { #region retry management int maxNumRetries = 5; int numRetries = 0; Random random = new Random(); #endregion TableStorageEntry table_entry = new TableStorageEntry(partitionKey, rowKey, object2track); #region insert management while (numRetries < maxNumRetries) { #region try try { TableOperation insertOperation = TableOperation.Insert(table_entry); table.Execute(insertOperation); break; } #endregion #region catch catch (StorageException ex) { string error = "Error in function " + System.Reflection.MethodBase.GetCurrentMethod().Name + " - " + ex.Message; System.Diagnostics.Trace.TraceError(error); if (ex.Message.Contains("(409)")) { numRetries++; long result = 0; if (long.TryParse(table_entry.RowKey, out result)) { if (numRetries >= 3) { result += random.Next(2, 10); } else { result++; } table_entry.RowKey = result.ToString(); } else { break; } } else { break; } } catch (Exception ex) { string error = "Error in function " + System.Reflection.MethodBase.GetCurrentMethod().Name + " - " + ex.Message; System.Diagnostics.Trace.TraceError(error); return(false); } #endregion } #endregion return(true); } #endregion #region catch catch (Exception ex) { string error = "Error in function " + System.Reflection.MethodBase.GetCurrentMethod().Name + " - " + ex.Message; System.Diagnostics.Trace.TraceError(error); return(false); } #endregion }