簡體   English   中英

使用azure函數從azure存儲表中檢索數據

[英]Retrieving data from azure storage table using azure functions

我正在嘗試使用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");
}

Azure Function支持Azure Table綁定。 您可以使用它來讀取或插入表。 您可以從此處獲取詳細信息: Azure功能的Azure表存儲綁定

如果您想要讀取多個表行,則需要使用IQueryable ,這是官方文檔中的示例

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}");
        }
    }
}

所以事實證明我需要創建一個擴展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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM