Не удалось прочитать двойное значение после обновления пакета WindowsAzure.Storage - PullRequest
0 голосов
/ 12 февраля 2019

Я запускаю веб-приложение - использую 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, и код работал без него (посмотрите настрока комментария)

Любые советы по решению этой проблемы приветствуются.

С уважением, Майкл

...