Это формат моих данных для хранения таблиц
PartitionKey Метка времени RowKey Close Currency Дата
Вот мой объект сущности
public class CurrencyEntity : TableEntity
{
public CurrencyEntity() { }
public CurrencyEntity(string currency, string date)
{
Currency = currency.ToUpper();
Date = date;
PartitionKey = currency.ToUpper();
RowKey = date;
}
public CurrencyEntity(string currency, string date, string close)
{
Currency = currency.ToUpper();
Date = date;
Close = close;
PartitionKey = currency.ToUpper();
RowKey = date;
}
public string Currency { get; set; }
public string Date { get; set; }
public string Close { get; set; }
}
Это мой метод обслуживания таблиц для получения значения валюты для даты для преобразования цен в доллары США.
public async Task<decimal?> GetCurrencyValueForDate(string currency, DateTime date)
{
//ensure variables match key formats
currency = currency.ToUpper();
if (date > DateTime.Now)
{
return null;
}
var stringDate = date.ToString(CurrencyTableRowKeyFormat);
var table = GetCloudTable(new AzureConfiguration(_config).WebsiteStorageAcctConnectionString, CurrencyTableName);
var retrieveOperation = TableOperation.Retrieve<CurrencyEntity>(currency, stringDate);
var result = await table.ExecuteAsync(retrieveOperation);
var dto = result?.Result as CurrencyEntity;
return Convert.ToDecimal(dto?.Close);
}
Операция извлечения фактически извлекает данные строки, НО каждый раз, когда переменная результата имеет все правильные значения, ЗА ИСКЛЮЧЕНИЕМ Close всегда имеет значение NULL, несмотря на тот факт, что close имеет значение в таблице.
Примечание: я не работал над этим проектом около 6 месяцев, я почти уверен, что он работал правильно в последний раз, когда я работал над ним. Я использую Microsoft.Azure.Cosmos.Table;
Любая помощь приветствуется.
Примечание. В случае сомнений перезагрузите компьютер. Поскольку Гуарав не смог воспроизвести ошибку И единственный ответ, с моим точно таким же кодом и таблицей не удалось вызвать ошибку, единственным логическим выводом является то, что моя таблица каким-то образом была повреждена, поскольку этот код работал некоторое время назад. Я удалил таблицу и повторно импортировал данные, и теперь все работает.