Я запускаю веб-приложение - использую WindowsAzure.Storage 7.2.0 - для чтения большого количества данных в табличном хранилище.Я обновил пакет nuget до WindowsAzure.Storage 9.3.3, и теперь у меня возникают проблемы с правильным чтением двойных значений, которые хранятся в хранилище.
Данные вставляются в хранилище таблиц заданием ASA, которое не менялось в течение нескольких месяцев, и я вижу значения в обозревателе хранилищ Microsoft Azure, например.-0,4 для небольшого отрицательного десятичного числа.
Но операция чтения извлекается -4.Я провел несколько тестов с EntityResolver, но не нашел рабочего решения.У кого-нибудь есть идея, что изменилось и как решить эту проблему?Вот фрагмент кода, который я использую, но он не работает
TableQuery<MeasurandRealTime> query = new TableQuery<MeasurandRealTime>().Where(filter);
//********************************** only for tests - not working *********************************
NumberFormatInfo decimalProvider = new NumberFormatInfo();
decimalProvider.NumberDecimalSeparator = ".";
EntityResolver<MeasurandRealTime> measurandResolver = (PartitionKey, RowKey, Timestamp, props, Etag) =>
{
MeasurandRealTime entity = new MeasurandRealTime();
entity.PartitionKey = PartitionKey;
entity.RowKey = RowKey;
entity.Timestamp = Timestamp;
entity.ETag = Etag;
entity.vs = props.ContainsKey("vs") ? props["vs"].StringValue : null;
entity.r = props.ContainsKey("r") ? props["r"].Int32Value : null;
entity.s = props.ContainsKey("s") ? props["s"].Int32Value : null;
if (props.ContainsKey("v")) entity.v = props["v"].DoubleValue;
else entity.v = null;
entity.cts = DateTime.Parse(props["cts"].DateTime.ToString(), null, System.Globalization.DateTimeStyles.RoundtripKind);
entity.ctse = (long)props["ctse"].Int64Value;
return entity;
};
//**************************************************************************************************/
List < MeasurandRealTime> resultList = new List<MeasurandRealTime>(measurandCount);
TableContinuationToken token = null;
do
{
//TableQuerySegment<MeasurandRealTime> queryResult = await _cloudTable.ExecuteQuerySegmentedAsync(query, token);
TableQuerySegment<MeasurandRealTime> queryResult = await _cloudTable.ExecuteQuerySegmentedAsync(query, measurandResolver, token);
token = queryResult.ContinuationToken;
resultList.AddRange(queryResult.Results);
} while (token != null);
С пакетом nuget WindowsAzure.Storage 7.2.0 я не использовал EntityResolver, и код работал без него (посмотрите настрока комментария)
Любые советы по решению этой проблемы приветствуются.
С уважением, Майкл