Delen via


Azure WebJobs Tables-clientbibliotheek voor .NET - versie 1.1.0

Deze extensie biedt functionaliteit voor toegang tot Azure-tabellen in Azure Functions.

Aan de slag

Het pakket installeren

Installeer de extensie Tables met NuGet:

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

Vereisten

U hebt een Azure-abonnement en een opslagaccount of Cosmos Tables-account nodig om dit pakket te kunnen gebruiken.

Opslagtabellen gebruiken

Als u een nieuw opslagaccount wilt maken, kunt u azure portal, Azure PowerShell of de Azure CLI gebruiken. Hier volgt een voorbeeld van het gebruik van de Azure CLI:

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

Cosmos-tabellen gebruiken

Als u een nieuwe Cosmos-tabellen wilt maken, kunt u azure portal, Azure PowerShell of de Azure CLI gebruiken.

De client verifiëren

Verbinding vertegenwoordigt een set gegevens die nodig zijn om verbinding te maken met een tabelservice. Het kan een connection string, een eindpunt, tokenreferentie of een gedeelde sleutel bevatten.

De Connection eigenschap van TableAttribute definieert welke verbinding wordt gebruikt voor toegang tot de tableservice. Gaat bijvoorbeeld [Tables(Connection="MyTableService")] verbinding gebruiken MyTableService .

De verbindingsgegevens kunnen worden ingesteld in local.settings.json of toepassingsinstellingen in Azure Portal.

Wanneer u een instelling toevoegt aan local.settings.json, plaatst u deze onder de Values eigenschap:

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

Wanneer u een instelling toevoegt aan toepassingsinstellingen in Azure Portal de opgegeven naam rechtstreeks gebruiken:

MyTableService = ...

De tabelextensie gebruikt standaard de AzureWebJobsStorage verbindingsnaam.

Verbindingsreeks

Als u verificatie van verbindingsreeksen wilt gebruiken, wijst u connection string waarde rechtstreeks toe aan de verbindingsinstelling.

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

Eindpunt- en tokenreferentie gebruiken

OPMERKING: verificatie van tokenreferenties wordt alleen ondersteund voor opslagtabellen.

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

Als er geen referentiegegevens worden opgegeven, wordt de DefaultAzureCredential gebruikt.

Wanneer u een door de gebruiker toegewezen beheerde identiteit gebruikt, moeten de clientId instellingen en credential worden opgegeven:

<ConnectionName>__credential = managedidentity

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

Gedeelde sleutelreferentie gebruiken

Wanneer u verificatie met een gedeelde sleutel gebruikt, moet de endpoint, accountKey en accountName worden opgegeven.

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

<ConnectionName>__credential__accountName = <account name>

<ConnectionName>__credential__accountKey = <account key>

Belangrijkste concepten

Met de invoerbinding kunt u de tabel lezen als invoer voor een Azure-functie. Met de uitvoerbinding kunt u tabelrijen in een Azure-functie wijzigen en verwijderen.

Volg de zelfstudie voor invoerbinding en uitvoerbinding voor meer informatie over het gebruik van deze extensie voor toegang tot de tabelservice.

Voorbeelden

Tabelextensies bieden alleen bindingen. Bindingen kunnen op zichzelf geen functie activeren. Het kan alleen vermeldingen naar de tabel lezen of schrijven.

In het volgende voorbeeld gebruiken we de HTTP-trigger om de functie aan te roepen.

Binding met één entiteit

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

Binding met één entiteit met behulp van modeltype

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

Binding met meerdere entiteiten met 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"]}");
        }
    }
}

Eén entiteit maken

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

Eén entiteit maken met behulp van een model

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

Meerdere entiteiten maken

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

Meerdere entiteiten maken met behulp van een model

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

Binding met SDK TableClient-type

Gebruik een tableClient-methodeparameter om toegang te krijgen tot de tabel met behulp van de 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()
        });
    }
}

Problemen oplossen

Raadpleeg Monitor Azure Functions voor hulp bij het oplossen van problemen.

Volgende stappen

Lees de inleiding tot Azure Function of de handleiding voor het maken van een Azure-functie.

Bijdragen

Zie de CONTRIBUTING.md voor meer informatie over het bouwen, testen en bijdragen aan deze bibliotheek.

Wij verwelkomen bijdragen en suggesties voor dit project. Voor de meeste bijdragen moet u instemmen met een licentieovereenkomst voor bijdragers (CLA: Contributor License Agreement) waarin u verklaart dat u gerechtigd bent ons het recht te geven uw bijdrage te gebruiken, en dat u dit ook doet. Ga naar cla.microsoft.com voor meer informatie.

Op dit project is de Microsoft Open Source Code of Conduct (Microsoft Open Source-gedragscode) van toepassing. Zie de Veelgestelde vragen over de gedragscode voor meer informatie of neem contact op opencode@microsoft.com met eventuele aanvullende vragen of opmerkingen.

Weergaven