通过使用表名指定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函数动态绑定到表?
答案 0 :(得分:1)
如果您的示例中所说的tableName
是Http触发器的路由,只需使用route参数来指定绑定。
[Table("{tableName}")] CloudTable table
使用IBinder
或Binder
时没有遇到任何错误
var table = await binder.BindAsync<CloudTable>(new TableAttribute($"{tableName}"));