Compartilhar via


Criar um item no Azure Cosmos DB for Table usando o .NET

APLICA-SE AO: Table

Os itens do Azure Cosmos DB representam uma entidade específica armazenada dentro de uma tabela. Na API for Table, um item consiste em um conjunto de pares chave-valor identificados exclusivamente pela composição das chaves de linha e de partição.

Criar um identificador exclusivo para um item

O identificador exclusivo, programaticamente conhecido como ****, é uma cadeia de caracteres distinta que identifica um item dentro de uma tabela. Cada item também inclui um valor de chave de partição que é usado para determinar a partição lógica do item. Ambas as chaves são necessárias ao criar um novo item dentro de uma tabela.

Dentro do escopo de uma tabela, dois itens não podem compartilhar a mesma chave de linha e chave de partição.

Criar um item

A classe TableEntity é uma implementação genérica de um dicionário que é projetado exclusivamente para facilitar a criação de um novo item a partir de um dicionário arbitrário de pares chave-valor.

Use uma das seguintes estratégias para modelar itens que você deseja criar em uma tabela:

Usar uma classe interna

O (string rowKey, string partitionKey) construtor da classe TableEntity é uma maneira rápida de criar um item apenas com as propriedades necessárias. Em seguida, você pode usar o método Add para adicionar pares chave-valor extras ao item.

Por exemplo, você pode criar uma nova instância da classe TableEntity especificando primeiro as chaves de linha e partição no construtor e, em seguida, adicionando novos pares chave-valor ao dicionário:

// Create new item using composite key constructor
TableEntity item1 = new(
    rowKey: "68719518388",
    partitionKey: "gear-surf-surfboards"
);

// Add properties to item
item1.Add("Name", "Sunnox Surfboard");
item1.Add("Quantity", 8);
item1.Add("Sale", true);

// Add new item to server-side table
await tableClient.AddEntityAsync<TableEntity>(item1);

O (IDictionary<string, object>) construtor da classe TableEntity converte um dicionário existente em um item pronto para ser adicionado a uma tabela.

Por exemplo, você pode passar um dicionário para uma nova instância da classe TableEntity:

// Create dictionary
Dictionary<string, object> properties = new()
{
    { "RowKey", "68719518388" },
    { "PartitionKey", "gear-surf-surfboards" },
    { "Name", "Sunnox Surfboard" },
    { "Quantity", 8 },
    { "Sale", true }
};

// Create new item using dictionary constructor
TableEntity item2 = new(
    values: properties
);

// Add new item to server-side table
await tableClient.AddEntityAsync<TableEntity>(item2);

O método TableClient.AddEntityAsync<> usa um parâmetro do tipo TableEntity e cria um item do lado do servidor na tabela.

Implementar interface

Observação

Os exemplos nesta seção pressupõem que você já tenha definido um tipo C# chamado Produto para representar seus dados:

// C# record type for items in the table
public record Product : ITableEntity
{
    public string RowKey { get; set; } = default!;

    public string PartitionKey { get; set; } = default!;

    public string Name { get; init; } = default!;

    public int Quantity { get; init; }

    public bool Sale { get; init; }

    public ETag ETag { get; set; } = default!;

    public DateTimeOffset? Timestamp { get; set; } = default!;
}

O método TableClient.AddEntityAsync<> usa um parâmetro de qualquer tipo que implemente a ITableEntity interface. A interface já inclui as propriedades necessárias RowKey e PartitionKey.

Por exemplo, você pode criar um novo objeto que implemente pelo menos todas as propriedades necessárias na interface ITableEntity:

// Create new item
Product item = new()
{
    RowKey = "68719518388",
    PartitionKey = "gear-surf-surfboards",
    Name = "Sunnox Surfboard",
    Quantity = 8,
    Sale = true
};

Em seguida, você pode passar esse objeto para o método AddEntityAsync<> criando um item do lado do servidor:

// Add new item to server-side table
await tableClient.AddEntityAsync<Product>(item);

Próximas etapas

Agora que você criou vários itens, use o próximo guia para ler um item.