属性 table 存储中通过 C# 访问的实体的值为零
property values of entities in table storage accessed through C# are zero
我有一个 table 存储设备,用于存储设备 ID、时间戳和 pm1。我尝试使用 C# 访问具有特定设备 ID 和特定时间范围的实体。我能够得到我想要的实体,但这些实体的 pm1 读数为零,这是不正确的。 table 存储中没有丢失 pm1 读数。我该如何解决?
这是我的代码:
main():
string partitionFilter = TableQuery.GenerateFilterCondition("deviceid", QueryComparisons.Equal, StartEntity.deviceid);
string date1 = TableQuery.GenerateFilterConditionForDate("ts", QueryComparisons.GreaterThanOrEqual,starttime);
string date2 = TableQuery.GenerateFilterConditionForDate("ts", QueryComparisons.LessThanOrEqual, endtime);
string datefilter = TableQuery.CombineFilters(date1, TableOperators.And, date2);
string pm1con = TableQuery.GenerateFilterConditionForInt("pm1con", QueryComparisons.GreaterThan, 0);
string finalFilter = TableQuery.CombineFilters(partitionFilter,TableOperators.And, datefilter);
string extrafilter = TableQuery.CombineFilters(finalFilter, TableOperators.And, pm1con);
TableQuery<EventEntity> RangeQueryforEnentEntities = new TableQuery<EventEntity>().Where(extrafilter);
TableContinuationToken token = null;
do
{
TableQuerySegment<EventEntity> resultSegment = EventsTable.ExecuteQuerySegmented(RangeQueryforEnentEntities, token);
token = resultSegment.ContinuationToken;
foreach (EventEntity entity in resultSegment.Results)
{
EventEntities.Add(entity);
log.Info($"C# All the entities in current event: {entity.deviceid}, {entity.ts}, {entity.PM1Con}");
}
} while (token != null);
return EventEntities;
public class EventEntity : TableEntity
{
public EventEntity(string deviceid, DateTime ts, int PM1Con, float TumblingB_threshold, float TumblingB_confidence)
{
this.PartitionKey = deviceid;
this.RowKey = ts.ToLongDateString();
}
public EventEntity() { }
public string deviceid { get; set; }
public DateTime ts { get; set; }
public float pm1con { get; set; }
public float TumblingB_threshold { get; set; }
public float TumblingB_confidence { get; set; }
}
这是 returned 结果:
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 2:42:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 2:45:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 2:51:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 2:54:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 2:57:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 3:00:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 3:03:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 3:06:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 3:09:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 3:12:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 3:15:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 3:18:00 AM, 0
这是我想要的结果:
如您所见,return pm1con 值是错误的。
使用 entity.pm1con 代替 entity.PM1Con。
table 实体转换区分大小写。
问题与数据类型有关。我使用 float 作为 pm1con 数据类型,但我应该使用 double.
我有一个 table 存储设备,用于存储设备 ID、时间戳和 pm1。我尝试使用 C# 访问具有特定设备 ID 和特定时间范围的实体。我能够得到我想要的实体,但这些实体的 pm1 读数为零,这是不正确的。 table 存储中没有丢失 pm1 读数。我该如何解决?
这是我的代码:
main():
string partitionFilter = TableQuery.GenerateFilterCondition("deviceid", QueryComparisons.Equal, StartEntity.deviceid);
string date1 = TableQuery.GenerateFilterConditionForDate("ts", QueryComparisons.GreaterThanOrEqual,starttime);
string date2 = TableQuery.GenerateFilterConditionForDate("ts", QueryComparisons.LessThanOrEqual, endtime);
string datefilter = TableQuery.CombineFilters(date1, TableOperators.And, date2);
string pm1con = TableQuery.GenerateFilterConditionForInt("pm1con", QueryComparisons.GreaterThan, 0);
string finalFilter = TableQuery.CombineFilters(partitionFilter,TableOperators.And, datefilter);
string extrafilter = TableQuery.CombineFilters(finalFilter, TableOperators.And, pm1con);
TableQuery<EventEntity> RangeQueryforEnentEntities = new TableQuery<EventEntity>().Where(extrafilter);
TableContinuationToken token = null;
do
{
TableQuerySegment<EventEntity> resultSegment = EventsTable.ExecuteQuerySegmented(RangeQueryforEnentEntities, token);
token = resultSegment.ContinuationToken;
foreach (EventEntity entity in resultSegment.Results)
{
EventEntities.Add(entity);
log.Info($"C# All the entities in current event: {entity.deviceid}, {entity.ts}, {entity.PM1Con}");
}
} while (token != null);
return EventEntities;
public class EventEntity : TableEntity
{
public EventEntity(string deviceid, DateTime ts, int PM1Con, float TumblingB_threshold, float TumblingB_confidence)
{
this.PartitionKey = deviceid;
this.RowKey = ts.ToLongDateString();
}
public EventEntity() { }
public string deviceid { get; set; }
public DateTime ts { get; set; }
public float pm1con { get; set; }
public float TumblingB_threshold { get; set; }
public float TumblingB_confidence { get; set; }
}
这是 returned 结果:
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 2:42:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 2:45:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 2:51:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 2:54:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 2:57:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 3:00:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 3:03:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 3:06:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 3:09:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 3:12:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 3:15:00 AM, 0
[2017-11-08 5:25:59 PM] C# All the entities in current event: HAVEN-0D0E0A-TZ-000115, 2017-10-25 3:18:00 AM, 0
这是我想要的结果:
如您所见,return pm1con 值是错误的。
使用 entity.pm1con 代替 entity.PM1Con。
table 实体转换区分大小写。
问题与数据类型有关。我使用 float 作为 pm1con 数据类型,但我应该使用 double.