Azure表随机返回null值

时间:2012-11-29 16:51:29

标签: c# .net azure azure-table-storage

我在C#中有下一段代码:

        var results = from g in this.context.MyStorageEventTable
                      where g.PartitionKey == partitionKey
                            && g.EventType == "MyEvent"
                      select g;
        var ev = results.FirstOrDefault();

对Azure表进行咨询。该表包含20000多个实体。问题是有时变量ev具有空值,并且有时具有实体对象。这是随机发生的。我知道该对象存在于表中,因此null值是错误的行为。为什么会这样?谢谢!

3 个答案:

答案 0 :(得分:4)

试试results.AsTableServiceQuery().FirstOrDefault()。如果这样做,问题是继续令牌回来了查询,表明有更多的数据,但你没有发出跟进查询来遵循该延续令牌并获得其余的数据。您应该始终使用AsTableServiceQuery()免费获得延续令牌。

答案 1 :(得分:2)

而是尝试:

results.take(1).AsTableServiceQuery().execute().firstOrDefault() 

您遇到的问题是由firstordefault将查询转换为错误的类型引起的。

拍摄1只是要求azure只有1行,以提高效率firstordefault

答案 2 :(得分:0)

如果问题仍然存在,请尝试:

results.AsTableServiceQuery().Take(1).ToArray().FirstOrDefault()

我遇到了类似的问题,这个解决方案对我有用。在查找结果实体或未返回连续标记时,此查询遵循延续标记。

results.AsTableServiceQuery()。FirstOrDefault()也应该遵循延续令牌,但它不会这样做。这是一种奇怪的行为,也会影响First(),Single()和SingleOrDefault()。在所有这些情况下,明确地期望单个实体并且不遵循继续令牌。只有在预期结果是集合时才会这样做。