Microsoft.Azure.WebJobs.Extensions.Tables 1.3.2

预留前缀
dotnet add package Microsoft.Azure.WebJobs.Extensions.Tables --version 1.3.2                
NuGet\Install-Package Microsoft.Azure.WebJobs.Extensions.Tables -Version 1.3.2                
此命令适用于在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Tables" Version="1.3.2" />                
对于支持 PackageReference 的项目,将此 XML 节点复制到项目文件中,以引用该包。
paket add Microsoft.Azure.WebJobs.Extensions.Tables --version 1.3.2                
#r "nuget: Microsoft.Azure.WebJobs.Extensions.Tables, 1.3.2"                
#r 指令可用于 F# Interactive 和多语言笔记本。将此内容复制到交互工具或脚本源代码中,以引用该包。
// Install Microsoft.Azure.WebJobs.Extensions.Tables as a Cake Addin
#addin nuget:?package=Microsoft.Azure.WebJobs.Extensions.Tables&version=1.3.2

// Install Microsoft.Azure.WebJobs.Extensions.Tables as a Cake Tool
#tool nuget:?package=Microsoft.Azure.WebJobs.Extensions.Tables&version=1.3.2                

Azure WebJobs Tables 客户端库,适用于 .NET

此扩展模块为 Azure Functions 访问 Azure 表提供功能。

入门

安装包

使用 NuGet 安装 Tables 扩展模块

dotnet add package Microsoft.Azure.WebJobs.Extensions.Tables

先决条件

您需要一个 Azure 订阅 和一个 存储帐户Cosmos 表帐户 来使用此包。

使用存储表

要创建新的存储帐户,您可以使用 Azure 门户Azure PowerShellAzure CLI。以下是一个使用 Azure CLI 的示例:

az storage account create --name <your-resource-name> --resource-group <your-resource-group-name> --location westus --sku Standard_LRS
使用 Cosmos 表

要创建新的 Cosmos 表,您可以使用 Azure PortalAzure PowerShellAzure CLI

验证客户端

连接表示连接到表服务所需的一系列信息。它可以包含连接字符串、端点、令牌凭据或共享密钥。

TableAttributeConnection 属性定义了用于 Table 服务访问的连接。例如,[Tables(Connection="MyTableService")] 将使用 MyTableService 连接。

可以在 local.settings.json 或 Azure Portal 的应用程序设置中设置连接信息。

将设置添加到 local.settings.json 时,将其放置在 Values 属性下

{
  "IsEncrypted": false,
  "Values": {
    "MyTableService": "..."
  }
}

在 Azure Portal 中添加应用程序设置时,直接使用提供名称

MyTableService = ...

Tables 扩展默认使用 AzureWebJobsStorage 连接名称。

连接字符串

要使用连接字符串身份验证,直接将连接字符串值分配给连接设置。

<ConnectionName> = DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net

使用端点和令牌凭据

注意:仅支持存储表使用令牌凭据身份验证。

<ConnectionName>__endpoint = https://...table.core.windows.net

如果没有提供凭据信息,则使用 DefaultAzureCredential

使用用户分配的管理的标识符时,需要提供 clientIdcredential 设置。

<ConnectionName>__credential = managedidentity

<ConnectionName>__clientId = <分配的用户ID>

使用共享密钥凭据

在使用 共享密钥身份验证 时,需要提供 endpointaccountKeyaccountName

<ConnectionName>__endpoint = https://...table.core.windows.net

<ConnectionName>__credential__accountName = <账户名称>

<ConnectionName>__credential__accountKey = <账户密钥>

关键概念

输入绑定允许您将表作为 Azure 函数的输入读取。输出绑定允许您在 Azure 函数中修改和删除表行。

请参阅 输入绑定教程输出绑定教程,了解如何使用此扩展访问表服务。

示例

Tables 扩展只提供绑定。绑定本身不能触发函数。它只能读取或写入表条目。

以下示例中,我们使用 HTTP 触发器 调用函数。

绑定到单个实体

public class InputSingle
{
    [FunctionName("InputSingle")]
    public static void Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
        [Table("MyTable", "<PartitionKey>", "<RowKey>")] TableEntity entity, ILogger log)
    {
        log.LogInformation($"PK={entity.PartitionKey}, RK={entity.RowKey}, Text={entity["Text"]}");
    }
}

使用模型类型绑定到单个实体

public class MyEntity
{
    public string PartitionKey { get; set; }
    public string RowKey { get; set; }
    public string Text { get; set; }
}
public class InputSingleModel
{
    [FunctionName("InputSingleModel")]
    public static void Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
        [Table("MyTable", "<PartitionKey>", "<RowKey>")] MyEntity entity, ILogger log)
    {
        log.LogInformation($"PK={entity.PartitionKey}, RK={entity.RowKey}, Text={entity.Text}");
    }
}

使用筛选绑定到多个实体

public class InputMultipleEntitiesFilter
{
    [FunctionName("InputMultipleEntitiesFilter")]
    public static void Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
        [Table("MyTable", "<PartitionKey>", Filter = "Text ne ''")] IEnumerable<TableEntity> entities, ILogger log)
    {
        foreach (var entity in entities)
        {
            log.LogInformation($"PK={entity.PartitionKey}, RK={entity.RowKey}, Text={entity["Text"]}");
        }
    }
}

创建单个实体

public class OutputSingle
{
    [FunctionName("OutputSingle")]
    public static void Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
        [Table("MyTable")] out TableEntity entity)
    {
        entity = new TableEntity("<PartitionKey>", "<RowKey>")
        {
            ["Text"] = "Hello"
        };
    }
}

使用模型创建单个实体

public class MyEntity
{
    public string PartitionKey { get; set; }
    public string RowKey { get; set; }
    public string Text { get; set; }
}
public class OutputSingleModel
{
    [FunctionName("OutputSingleModel")]
    public static void Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
        [Table("MyTable")] out MyEntity entity)
    {
        entity = new MyEntity()
        {
            PartitionKey = "<PartitionKey>",
            RowKey = "<RowKey>",
            Text = "Hello"
        };
    }
}

创建多个实体

public class OutputMultiple
{
    [FunctionName("OutputMultiple")]
    public static void Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "POST")] HttpRequest request,
        [Table("MyTable")] IAsyncCollector<TableEntity> collector)
    {
        for (int i = 0; i < 10; i++)
        {
            collector.AddAsync(new TableEntity("<PartitionKey>", i.ToString())
            {
                ["Text"] = i.ToString()
            });
        }
    }
}

使用模型创建多个实体

public class MyEntity
{
    public string PartitionKey { get; set; }
    public string RowKey { get; set; }
    public string Text { get; set; }
}
public class OutputMultipleModel
{
    [FunctionName("OutputMultipleModel")]
    public static void Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "POST")] HttpRequest request,
        [Table("MyTable")] IAsyncCollector<MyEntity> collector)
    {
        for (int i = 0; i < 10; i++)
        {
            collector.AddAsync(new MyEntity()
            {
                PartitionKey = "<PartitionKey>",
                RowKey = i.ToString(),
                Text = i.ToString()
            });
        }
    }
}

绑定到 SDK TableClient 类型

使用 Azure Tables SDK 通过 TableClient 方法参数访问表。

public class BindTableClient
{
    [FunctionName("BindTableClient")]
    public static async Task Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "POST")] HttpRequest request,
        [Table("MyTable")] TableClient client)
    {
        await client.AddEntityAsync(new TableEntity("<PartitionKey>", "<RowKey>")
        {
            ["Text"] = request.GetEncodedPathAndQuery()
        });
    }
}

故障排除

请参阅监控 Azure 函数以获取故障排除指导。

下一步

阅读Azure 函数简介创建 Azure 函数指南

贡献

有关构建、测试和为此库做贡献的详细信息,请参阅CONTRIBUTING.md

本项目欢迎贡献和建议。大多数贡献都需要您同意贡献者许可协议(CLA),声明您有权利并且确实授权我们使用您的贡献。详情请访问cla.microsoft.com

本项目已采用Microsoft 开源行为准则。更多信息请参阅行为准则常见问题解答,或通过[email protected]联系以提出任何额外的问题或评论。

产品 兼容和额外的计算目标框架版本。
.NET net5.0 已计算。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。
.NET Core netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。
.NET Standard netstandard2.0 兼容。 netstandard2.1 已计算。
.NET Framework net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。
MonoAndroid monoandroid 已计算。
MonoMac monomac 已计算。
MonoTouch monotouch 已计算。
Tizen tizen40 已计算。 tizen60 已计算。
Xamarin.iOS xamarinios 已计算。
Xamarin.Mac xamarinmac 已计算。
Xamarin.TVOS xamarintvos 已计算。
Xamarin.WatchOS xamarinwatchos 已计算。
兼容的目标框架
包含的目标框架(包内)
了解有关 目标框架.NET Standard 的更多信息。

NuGet 包 (1)

显示依赖于 Microsoft.Azure.WebJobs.Extensions.Tables 的前 1 个 NuGet 包

下载
FunctionMonkey.Cgo

包说明

GitHub 仓库

此包没有被任何流行的 GitHub 仓库使用。

版本 下载 最后更新
1.3.2 10,608 6/13/2024
1.3.1 12,529 4/17/2024
1.2.1 114,702 11/13/2023
1.2.0 81,202 8/11/2023
1.2.0-beta.1 5,638 5/23/2023
1.1.0 135,696 3/13/2023
1.0.0 572,090 4/12/2022
1.0.0-beta.2 4,710 3/10/2022
1.0.0-beta.1 30,349 1/14/2022