Share via


Azure WebJobs Tables-klientbibliotek för .NET – version 1.1.0

Det här tillägget tillhandahåller funktioner för åtkomst till Azure-tabeller i Azure Functions.

Komma igång

Installera paketet

Installera tabelltillägget med NuGet:

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

Förutsättningar

Du behöver en Azure-prenumeration och ett lagringskonto eller Ett Cosmos-tabellkonto för att kunna använda det här paketet.

Använda lagringstabeller

Om du vill skapa ett nytt lagringskonto kan du använda Azure Portal, Azure PowerShell eller Azure CLI. Här är ett exempel med Hjälp av Azure CLI:

az storage account create --name <your-resource-name> --resource-group <your-resource-group-name> --location westus --sku Standard_LRS

Använda Cosmos-tabeller

Om du vill skapa en ny Cosmos-tabeller kan du använda Azure Portal, Azure PowerShell eller Azure CLI.

Autentisera klienten

Anslutningen representerar en uppsättning information som krävs för att ansluta till en tabelltjänst. Den kan innehålla en anslutningssträng, en slutpunkt, tokenautentiseringsuppgifter eller en delad nyckel.

Egenskapen ConnectionTableAttribute för definierar vilken anslutning som används för table service-åtkomsten. Till exempel [Tables(Connection="MyTableService")] kommer att använda MyTableService anslutning.

Anslutningsinformationen kan anges i local.settings.json eller programinställningar i Azure Portal.

När du lägger till en inställning i local.settings.json placerar du den Values under egenskapen:

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

När du lägger till en inställning i programinställningar i Azure Portal använd det angivna namnet direkt:

MyTableService = ...

Tabelltillägget AzureWebJobsStorage använder anslutningsnamnet som standard.

Anslutningssträng

Om du vill använda autentisering med anslutningssträngar tilldelar du anslutningssträngsvärdet direkt till anslutningsinställningen.

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

Använda slutpunkts- och tokenautentiseringsuppgifter

Obs! Tokenautentisering med autentiseringsuppgifter stöds endast för lagringstabeller.

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

Om ingen information om autentiseringsuppgifter anges används den DefaultAzureCredential .

När du använder användartilldelad hanterad identitet clientId måste inställningarna och credential anges:

<ConnectionName>__credential = managedidentity

<ConnectionName>__clientId = <user-assigned client id>

Använda autentiseringsuppgifter för delad nyckel

När du använder autentisering med endpointaccountKeydelad nyckel måste och accountName anges.

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

<ConnectionName>__credential__accountName = <account name>

<ConnectionName>__credential__accountKey = <account key>

Viktiga begrepp

Med indatabindningen kan du läsa tabellen som indata till en Azure-funktion. Med utdatabindningen kan du ändra och ta bort tabellrader i en Azure-funktion.

Följ självstudien om indatabindning och utdatabindning för att lära dig mer om hur du använder det här tillägget för att komma åt tabelltjänsten.

Exempel

Tabelltillägg innehåller endast bindningar. Bindningar i sig kan inte utlösa en funktion. Den kan bara läsa eller skriva poster till tabellen.

I följande exempel använder vi HTTP-utlösare för att anropa funktionen.

Bindning till en enda entitet

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

Bindning till en enskild entitet med modelltyp

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

Bindning till flera entiteter med filter

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

Skapa en enda entitet

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

Skapa en enskild entitet med hjälp av modellen

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

Skapa flera entiteter

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

Skapa flera entiteter med modellen

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

Bindning till SDK TableClient-typ

Använd en TableClient-metodparameter för att komma åt tabellen med hjälp av Azure Tables SDK.

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

Felsökning

Information om felsökning finns i Övervaka Azure Functions.

Nästa steg

Läs introduktionen till Azure Function eller skapa en Azure-funktionsguide.

Bidra

Mer information om hur du skapar, testar och bidrar till det här biblioteket finns i CONTRIBUTING.md .

Det här projektet välkomnar bidrag och förslag. Merparten av bidragen kräver att du godkänner ett licensavtal för bidrag, där du deklarerar att du har behörighet att bevilja oss rättigheten att använda ditt bidrag, och att du dessutom uttryckligen gör så. Mer information finns i cla.microsoft.com.

Det här projektet använder sig av Microsofts uppförandekod för öppen källkod. Mer information finns i Vanliga frågor och svar om uppförandekod eller kontakt opencode@microsoft.com med ytterligare frågor eller kommentarer.

Visningar