WindowsAzure.Storage软件包更新后,无法读取双精度值

时间:2019-02-12 10:46:34

标签: azure azure-storage azure-table-storage

我正在运行一个Webapp-使用WindowsAzure.Storage 7.2.0-用于读取表存储中的大量数据。我现在将nuget软件包升级到WindowsAzure.Storage 9.3.3,现在我无法正确读取存储在存储中的double值。

数据已由ASA Job插入表存储中,该存储已经有几个月没有变化了,我可以在Microsoft Azure Storage Explorer中看到这些值。 -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,并且没有它,代码也可以正常工作(请看注释行)

感谢您提供解决此问题的任何提示。

最诚挚的问候迈克尔

0 个答案:

没有答案