Enlaces de Azure Tables para Azure Functions

Azure Functions se integra con Azure Tables mediante desencadenadores y enlaces. La integración con Azure Tables permite crear funciones que leen y escriben datos con Azure Cosmos DB for Table y Azure Table Storage.

Acción Tipo
Lectura de datos de tabla en una función Enlace de entrada
Permitir que una función escriba datos de tabla Enlace de salida

Instalación de la extensión

El paquete NuGet de la extensión que instale depende del modo de C# que esté usando en la aplicación de funciones:

Las funciones se ejecutan en un proceso de trabajo de C# aislado. Para más información, consulte Guía para ejecutar C# Azure Functions en un proceso de trabajo aislado.

El proceso para instalar la extensión varía en función de la versión de la extensión:

Esta versión presenta la posibilidad de conectarse con una identidad en lugar de un secreto. Para obtener un tutorial sobre cómo configurar las aplicaciones de funciones con identidades administradas, consulte el tutorial Creación de una aplicación de funciones con conexiones basadas en identidades.

Esta versión permite enlazar con tipos de Azure.Data.Tables. También presenta la capacidad de usar Azure Cosmos DB for Table.

Esta extensión está disponible con la instalación del paquete NuGet Microsoft.Azure.Functions.Worker.Extensions.Tables en un proyecto que use la versión 5.x o posterior de la extensión para blobs y colas.

Mediante la CLI de .NET:

# 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

Nota

Azure Blobs, Azure Queues y Azure Tables ahora usan extensiones diferentes y se les hace referencia por separado. Por ejemplo, para usar los desencadenadores y enlaces de los tres servicios en la aplicación en un proceso aislado de .NET, debe agregar los siguientes paquetes al proyecto:

Antes, las extensiones se distribuían juntas como Microsoft.Azure.Functions.Worker.Extensions.Storage, versión 4.x. Este mismo paquete también tiene una versión 5.x que hace referencia solo a los paquetes divididos para blobs y colas. Al actualizar las versiones anteriores de las referencias del paquete, es posible que tenga que hacer referencia también al nuevo paquete NuGet Microsoft.Azure.Functions.Worker.Extensions.Tables. Además, al hacer referencia a estos paquetes divididos más recientes, asegúrese de que no hace referencia a una versión anterior del paquete de almacenamiento combinado, ya que esto provocaría conflictos por las dos definiciones de los mismos enlaces.

Si va a escribir la aplicación con F#, también debe configurar esta extensión como parte de la configuración de inicio de la aplicación. En la llamada a ConfigureFunctionsWorkerDefaults() o ConfigureFunctionsWebApplication(), agregue un delegado que tome un parámetro IFunctionsWorkerApplication. Después, dentro del cuerpo de ese delegado, llame a ConfigureTablesExtension() en el objeto:

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

Instalación del conjunto

Los enlaces de Azure Tables forman parte de un conjunto de extensiones, que se especifica en el archivo de proyecto host.json. Es posible que tenga que modificar este conjunto para cambiar la versión de los enlaces o en caso de que los conjuntos aún no estén instalados. Para obtener más información, consulte Conjuntos de extensiones.

Esta versión presenta la posibilidad de conectarse con una identidad en lugar de un secreto. Para obtener un tutorial sobre cómo configurar las aplicaciones de funciones con identidades administradas, consulte el tutorial Creación de una aplicación de funciones con conexiones basadas en identidades.

Para agregar esta versión de la extensión desde el conjunto de extensiones v3, puede agregar o reemplazar el código siguiente en el archivo host.json:

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

Tipos de enlaces

Los tipos de enlace admitidos para .NET dependen de la versión de extensión y del modo de ejecución de C#, que puede ser uno de los siguientes:

Una función de C# compilada de la biblioteca de clases de procesos de trabajo aislados se ejecuta en un proceso aislado del entorno de ejecución.

Seleccione una versión para ver los detalles del tipo de enlace para el modo y la versión.

El proceso de trabajo aislado admite tipos de parámetros según las tablas siguientes. El soporte para enlazar a tipos desde Azure.Data.Tables está en versión preliminar.

Enlace de entrada de Azure Tables

Al trabajar con una sola entidad de tabla, el enlace de entrada de Azure Tables puede enlazarse a los siguientes tipos:

Tipo Descripción
Un tipo serializable JSON que implementa ITableEntity Functions intenta deserializar la entidad en un tipo de objeto CRL estándar (POCO). El tipo debe implementar ITableEntity o tener una propiedad de cadena RowKey y una propiedad de cadena PartitionKey.
TableEntity1 La entidad como tipo de diccionario.

Al trabajar con varias entidades desde una consulta, el enlace de entrada de Azure Tables puede enlazarse a los siguientes tipos:

Tipo Descripción
IEnumerable<T> donde T implementa ITableEntity Una enumeración de entidades devueltas por la consulta. Cada entrada representa una entidad. El tipo T debe implementar ITableEntity o tener una propiedad de cadena RowKey y una propiedad de cadena PartitionKey.
TableClient1 Un cliente conectado a la tabla. Ofrece el mayor control para procesar la tabla y puede utilizarse para escribir en ella si la conexión tiene permisos suficientes.

1 Para usar estos tipos, es necesario hacer referencia a Microsoft.Azure.Functions.Worker.Extensions.Tables 1.2.0 o posterior y a las dependencias comunes para los enlaces de tipo de SDK.

Enlace de salida de Azure Tables

Cuando quiera que la función escriba en una sola entidad, el enlace de salida de Azure Tables puede enlazarse a los siguientes tipos:

Tipo Descripción
Tipo serializable JSON que implementa [ITableEntity] Functions intenta serializar un tipo de objeto de SQL Server (POCO) como entidad. El tipo debe implementar [ITableEntity] o tener una propiedad de cadena RowKey y una propiedad de cadena PartitionKey.

Cuando quiera que la función escriba en múltiples entidades, el enlace de salida de Azure Tables puede enlazarse a los siguientes tipos:

Tipo Descripción
T[] donde T es uno de los tipos de entidad único Matriz que contiene varias entidades. Cada entrada representa una entidad.

Para otros escenarios de salida, cree y use tipos de Azure.Data.Tables directamente.

Pasos siguientes