简体   繁体   English

从 Azure 表存储中检索记录正在抛出 Object 未设置参考

[英]Retrieve records from Azure Table Storage is throwing Object Reference not set

I have very simple code to retrieve all items from Table Storage.我有非常简单的代码来从表存储中检索所有项目。 Below code is failing with Object Reference not set exception下面的代码因 Object 参考未设置异常而失败

    public async Task<List<StringInternTableEntity>> GetAllRowsAsync()
    {
        var entities = new List<StringInternTableEntity>();

        try
        {
            TableContinuationToken token = null;
            do
            {
                var queryResult = await this.azureCloudTable.ExecuteQuerySegmentedAsync(new TableQuery<StringInternTableEntity>(), token);
                entities.AddRange(queryResult.Results);
                token = queryResult.ContinuationToken;
            } while (token != null);

        }
        catch (Exception ex)
        {
            return null;
        }

        return entities;
    }

public class StringInternTableEntity : TableEntity
{
    public StringInternTableEntity()
    {
    }

    public StringInternTableEntity(string runStartTimeStamp, string wordKey)
    {
        PartitionKey = runStartTimeStamp;
        RowKey = wordKey;
    }

    public int NumberValue { get; set; }
}

" at Microsoft.Azure.Cosmos.Table.Extensions.TableExtensionExecutor.<>c__DisplayClass24_0 2.<<ExecuteQuerySegmentedInternalAsync>b__0>d.MoveNext()\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at Microsoft.Azure.Cosmos.Table.Extensions.TableExtensionRetryPolicy.<ExecuteUnderRetryPolicy>d__2 1.MoveNext()\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at Citadel.Common.Utils.AzureCloudTableHelper.d__9.MoveNext() in C:\Users\kalsa\source\repos\Citadel3\Citadel.Common\Utils\AzureCloudTableHelper.cs:line 166" " 在 Microsoft.Azure.Cosmos.Table.Extensions.TableExtensionExecutor.<>c__DisplayClass24_0 2.<<ExecuteQuerySegmentedInternalAsync>b__0>d.MoveNext()\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at Microsoft.Azure.Cosmos.Table.Extensions.TableExtensionRetryPolicy.<ExecuteUnderRetryPolicy>d__2 1.MoveNext()\r\n 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n 在 System.Runtime.CompilerServices.TaskAwaiter .HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at Citadel.Common.Utils.AzureCloudTableHelper.d__9.MoveNext() in C:\Users\kalsa\源\repos\Citadel3\Citadel.Common\Utils\AzureCloudTableHelper.cs:line 166"

在此处输入图像描述

Also in my table I have 1 simple entry.同样在我的表中,我有 1 个简单的条目。在此处输入图像描述

You may try the below code where I have modified the logic for retrieval of data and finally storing it into the list您可以尝试下面的代码,其中我修改了检索数据的逻辑并最终将其存储到列表中

 public async Task<List<StringInternTableEntity>> GetAllRowsAsync()
        {
             var query = this.azureCloudTable.CreateQuery<StringInternTableEntity>();
                var result = new List<StringInternTableEntity>();
                var token = new TableContinuationToken();
                do
                {
                    var segment = await this.azureCloudTable.ExecuteQuerySegmentedAsync(query, token);
                    token = segment.ContinuationToken;
                    result.AddRange(segment);
                } while (token != null);
                List<StringInternTableEntity> lstClientID = new List<StringInternTableEntity>();
                foreach (StringInternTableEntity codeMapping in result)
                {
                    lstClientID.Add(codeMapping);
                }
                return lstClientID;
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM