我正在运行一个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,并且没有它,代码也可以正常工作(请看注释行)
感谢您提供解决此问题的任何提示。
最诚挚的问候迈克尔