使用 .NET Core 的 Azure 存储 CRUD 操作

Azure Storage CRUD operations using .NET Core

我最近一直在使用 Azure 存储资源,特别是我只是在 Table 中玩弄 CRUD 操作。我能够使用 .NET Framework 完成一项任务,但是,最近我的要求发生了变化,我不得不迁移到 .NET Core。我编写了相同类型的代码,它到达 CreateTable() 中的 try-catch 语句并无故停止,我没有收到任何异常或消息,程序只是从那里退出。我一直在努力解决这个问题,到目前为止,我找到了以下解决方案,该解决方案似乎缺少一小部分才能使其正常工作。

此外,之前我使用 CosmosDB API 来执行此操作。不幸的是,它在 .NET Core 中不可用,因此我想出了这个解决方案。

我的想法:我也担心身份验证部分,因为我无法确定它是否成功。它通过 Auth() 没有问题。如果有人能给我正确的方向来解决这个问题,我将不胜感激。谢谢!

    static CloudStorageAccount _storageAccount;
    static void Main(string[] args)
    {
        Auth();
        CreateTable();
    }
    static void Auth()
    {
         _storageAccount = new CloudStorageAccount(
             new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(
                 "MyResource", "MyKey"),true);
    }

    async static void CreateTable()
    {
        CloudTableClient tableClient = _storageAccount.CreateCloudTableClient();
        CloudTable peopleTable = tableClient.GetTableReference("XYZ");
        try
        {
            await peopleTable.CreateIfNotExistsAsync();
        }
        catch(Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        People customer = new People("Garry", "Johnson");
        customer.Email = "xxx@yyy.zzz";
        customer.PhoneNumber = "123456789";
        TableOperation insertOperation = TableOperation.Insert(customer);
        var result = await peopleTable.ExecuteAsync(insertOperation);
    }

}

I wrote the same type of code by it reaches try-catch statement in CreateTable() and stop for no reason.

由于 CreateTable() 是一个异步方法,程序将直接退出而不等待执行结果。

I would appreciate if anyone could give me the right direction to the solution of this problem

请尝试使用以下演示代码。如果在控制台中得到204表示创建table并向table插入记录成功,否则会在控制台中得到异常信息。

static void Main(string[] args)
        {
            Auth();
            var result = CreateTable().Result;
            Console.WriteLine(result);
            Console.ReadKey();
        }

async static Task<string> CreateTable()
{
      CloudTableClient tableClient = _storageAccount.CreateCloudTableClient();
      CloudTable peopleTable = tableClient.GetTableReference("XYZ");
      try
         {
                await peopleTable.CreateIfNotExistsAsync();
                People customer = new People("Garry", "Johnson");
                customer.Email = "xxx@yyy.zzz";
                customer.PhoneNumber = "123456789";
                TableOperation insertOperation = TableOperation.Insert(customer);
                var result = await peopleTable.ExecuteAsync(insertOperation);
                return result.HttpStatusCode.ToString();
        }
        catch (Exception ex)
        {
             Console.WriteLine(ex.Message);
        }
        return null;

  }