适用于 Azure Functions 的 Azure 表绑定

Azure Functions 通过触发器和绑定Azure 表集成。 通过与 Azure 表集成,可以使用 Azure Cosmos DB for TableAzure Table Storage 生成用于读取和写入数据的函数。

操作 类型
读取函数中的表数据 输入绑定
允许函数写入表数据 输出绑定

安装扩展

你安装的扩展 NuGet 包取决于你在函数应用中使用的 C# 模式:

函数在独立的 C# 工作进程中执行。 若要了解详细信息,请参阅有关在独立工作进程中运行 C# Azure Functions 的指南

安装扩展的过程因扩展版本的不同而异:

此版本引入了使用标识而不是机密进行连接的功能。 有关使用托管标识配置函数应用的教程,请参阅使用基于标识的连接创建函数应用教程

此版本允许绑定到 Azure.Data.Tables 中的类型。 它还引入了使用 Azure Cosmos DB for Table 的功能。

通过将 Microsoft.Azure.Functions.Worker.Extensions.Tables NuGet 包安装到使用 Blob队列扩展的 5.x 或更高版本的项目,可以使用此扩展。

使用 .NET CLI:

# Install the Azure Tables extension
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Tables --version 1.0.0

# Update the combined Azure Storage extension (to a version which no longer includes Azure Tables)
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage --version 5.0.0

注意

Blob 存储、队列存储和表存储现在使用单独的扩展,并单独引用。 例如,若要在 .NET 隔离进程应用中同时使用 Blob 存储和队列存储触发器与绑定,应将以下包添加到项目:

Azure Cosmos DB for Table 扩展当前不支持独立进程。 如果你的应用需要使用 Azure 表,则必须使用 Microsoft.Azure.Functions.Worker.Extensions.Storage(版本 4.x)。 此包还有一个 5.x 版本,该版本仅引用 Blob 存储和队列存储的包。 在引用这些较新的拆分包时,请确保不要同时引用旧版组合存储包,否则会导致相同绑定的两种定义之间发生冲突。

如果要使用 F# 编写应用程序,则还必须将此扩展配置为应用的启动配置的一部分。 在对 ConfigureFunctionsWorkerDefaults()ConfigureFunctionsWebApplication() 的调用中,添加接受 IFunctionsWorkerApplication 参数的委托。 然后在该委托的正文中,在对象上调用 ConfigureTablesExtension()

let hostBuilder = new HostBuilder()
hostBuilder.ConfigureFunctionsWorkerDefaults(fun (context: HostBuilderContext) (appBuilder: IFunctionsWorkerApplicationBuilder) ->
    appBuilder.ConfigureTablesExtension() |> ignore
) |> ignore

安装捆绑包

Azure 表绑定是在 host.json 项目文件中指定的扩展捆绑包的一部分。 你可能需要修改此捆绑包以更改绑定的版本,或者如果尚未安装捆绑包。 若要了解详细信息,请参阅扩展捆绑包

此版本引入了使用标识而不是机密进行连接的功能。 有关使用托管标识配置函数应用的教程,请参阅使用基于标识的连接创建函数应用教程

可以通过在 host.json 文件中添加或替换以下代码,从扩展捆绑包 v3 添加该扩展的这一版本:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.3.0, 4.0.0)"
    }
}

绑定类型

.NET 支持的绑定类型取决于扩展版本和 C# 执行模式,可以是以下类型之一:

独立工作进程类库的已编译 C# 函数在独立于运行时的进程中运行。

请选择一个版本来查看模式和版本的绑定类型详细信息。

独立工作进程支持下表所示的参数类型。 对绑定到 Azure.Data.Tables 中类型的支持目前处于预览阶段。

Azure 表输入绑定

使用单个表实体时,Azure 表输入绑定可以绑定到以下类型:

类型 说明
实现 ITableEntity 的 JSON 可序列化类型 Functions 会尝试将实体反序列化为普通的旧 CLR 对象 (POCO) 类型。 该类型必须实现 ITableEntity 或具有字符串 RowKey 属性和字符串 PartitionKey 属性。
TableEntity (预览版1
作为类似于字典的类型的实体。

如果使用查询中的多个实体,可将 Azure 表输入绑定绑到以下类型:

类型 说明
IEnumerable<T> 其中 T 实现 ITableEntity 查询返回的实体的枚举。 每个条目表示一个实体。 类型 T 必须实现 ITableEntity 或具有字符串 RowKey 属性和字符串 PartitionKey 属性。
TableClient (预览版1
连接到表的客户端。 这提供了对表处理的充分控制,如果连接具有足够的权限,则可用于写入容器。

1 若要使用这些类型,需要引用 Microsoft.Azure.Functions.Worker.Extensions.Tables 1.2.0-preview1 或更高版本以及 SDK 类型绑定的常见依赖项

Azure 表输出绑定

如果希望函数写入单个实体,Azure 表输出绑定可以绑定到以下类型:

类型 说明
实现 [ITableEntity] 的 JSON 可序列化类型 函数尝试将普通的旧 CLR 对象 (POCO) 类型序列化为实体。 该类型必须实现 [ITableEntity] 或具有字符串 RowKey 属性和字符串 PartitionKey 属性。

如果希望函数写入多个实体,Azure 表输出绑定可以绑定到以下类型:

类型 说明
T[],其中 T 是单个实体类型之一 包含多个实体的数组。 每个条目表示一个实体。

对于其他输出方案,请直接创建和使用 Azure.Data.Tables 中的类型。

后续步骤