如何使用Azure函数联编程序查询运行时指定的表?

时间:2019-02-14 10:22:57

标签: azure azure-functions azure-table-storage

通过使用表名指定Table属性可以很容易地将Azure函数绑定到表:

'g'

但是如果对表名进行了参数化,即该函数从表中读取在HTTP请求中传递了该名的函数,则该怎么办:

customerAccount__c    offers__c         Id
        -                 -              -
        1                'a'      
        1                'w'      
        1                'x'      
        2                'a'            ...
        2                'w'
        3                'y'
        3                'z'
        3                'a'  
        4                'a'      

我想做的是使用TableAttribute绑定表:

[FunctionName("TableInput")]
public static void Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req, 
    [Table("MyTable")] MyTable table, 
    ILogger log)
{
    ...
}

但是,看起来IBinder接口不支持表绑定以从表中读取数据。我不能将BindAsync与CloudTable类型一起使用以获取对Table的引用。我可以绑定到TableEntity,但这仅适用于使用IAcyncCollector将数据插入表中的目的。

是否可以通过在运行时指定表名来将Azure函数动态绑定到表?

1 个答案:

答案 0 :(得分:1)

如果您的示例中所说的tableName是Http触发器的路由,只需使用route参数来指定绑定。

[Table("{tableName}")] CloudTable table

使用IBinderBinder时没有遇到任何错误

var table = await binder.BindAsync<CloudTable>(new TableAttribute($"{tableName}"));