使用azure函数从azure存储表中检索数据

问题描述 投票:0回答:2

我正在尝试使用azure函数从Azure存储表中检索特定的列数据。我正在使用table.ExecuteAsync(TableOperation.Retrieve())方法,但我不知道我正在做的是对的。

static async Task<TableResult>  GetAllMessages(CloudTable table, String InvocationName)
{

    TableResult x = await table.ExecuteAsync(TableOperation.Retrieve(InvocationName,"1" ));    
    return x;
}

public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route =null)] HttpRequest req,ILogger log)
{
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
    CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
    CloudTable table = tableClient.GetTableReference("models");
    var x = await GetAllMessages(table, "InvocationName");
}
c# azure-storage azure-functions
2个回答
0
投票

Azure Function支持Azure Table绑定。您可以使用它来读取或插入表。你可以从这里得到细节:Azure Table storage bindings for Azure Functions

如果你想读取多个表行,你需要使用IQueryable,这里是官方文档中的example

public class TableStorage
{
    public class MyPoco : TableEntity
    {
        public string Text { get; set; }
    }

    [FunctionName("TableInput")]
    public static void TableInput(
        [QueueTrigger("table-items")] string input, 
        [Table("MyTable", "MyPartition")] IQueryable<MyPoco> pocos, 
        ILogger log)
    {
        foreach (MyPoco poco in pocos)
        {
            log.LogInformation($"PK={poco.PartitionKey}, RK={poco.RowKey}, Text={poco.Text}");
        }
    }
}

0
投票

所以事实证明我需要创建一个扩展TableEntity并在该类中包含我的表列的类

class model : TableEntity{
    public string Name { get; set; }
    public override string ToString(){
     return  " " + Name;
    }
}
static async Task<TableResult>  GetAllMessages(CloudTable table, String InvocationName)
{

    TableResult x = await table.ExecuteAsync(TableOperation.Retrieve(InvocationName,"1" ));    
    return x;
}

public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route =null)] HttpRequest req,ILogger log)
{
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
    CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
    CloudTable table = tableClient.GetTableReference("models");
    var x = await GetAllMessages(table, "InvocationName");
    string url = ((model)x.Result).ToString();
}
© www.soinside.com 2019 - 2024. All rights reserved.