使用 .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;
}
我最近一直在使用 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;
}