Sdílet prostřednictvím


Vytvoření položky ve službě Azure Cosmos DB pro tabulku pomocí .NET

PLATÍ PRO: Stůl

Položky ve službě Azure Cosmos DB představují konkrétní entitu uloženou v tabulce. V rozhraní API pro tabulku se položka skládá ze sady párů klíč-hodnota jednoznačně identifikovaných složenou z klíčů řádků a oddílů.

Vytvoření jedinečného identifikátoru pro položku

Jedinečný identifikátor, který se programově označuje jako **** je jedinečný řetězec, který identifikuje položku v tabulce. Každá položka obsahuje také hodnotu klíče oddílu, která slouží k určení logického oddílu položky. Při vytváření nové položky v tabulce se vyžadují oba klíče.

V rámci oboru tabulky nemůžou dvě položky sdílet stejný klíč řádku i klíč oddílu.

Vytvoření položky

Třída TableEntity je obecná implementace slovníku, která je jedinečně navržená tak, aby usnadnila vytvoření nové položky z libovolného slovníku párů klíč-hodnota.

K modelování položek, které chcete vytvořit v tabulce, použijte jednu z následujících strategií:

Použití předdefinované třídy

Konstruktor (string rowKey, string partitionKey) třídy TableEntity je rychlý způsob, jak vytvořit položku pouze s požadovanými vlastnostmi. Metodu Add pak můžete použít k přidání párů klíč-hodnota navíc k položce.

Můžete například vytvořit novou instanci třídy TableEntity tak, že nejprve zadáte klíč řádku a oddílu v konstruktoru a pak do slovníku přidáte nové páry klíč-hodnota:

// 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);

Konstruktor (IDictionary<string, object>) třídy TableEntity převede existující slovník na položku připravenou k přidání do tabulky.

Například můžete předat slovník nové instanci TableEntity třídy:

// 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);

Metoda TableClient.AddEntityAsync<> přebírá parametr typu TableEntity a pak vytvoří položku na straně serveru v tabulce.

Implementace rozhraní

Poznámka:

Příklady v této části předpokládají, že jste již definovali typ jazyka C#, který představuje vaše data s názvem Product:

// 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!;
}

Metoda TableClient.AddEntityAsync<> přebírá parametr libovolného typu, který implementuje ITableEntity rozhraní. Rozhraní již obsahuje požadované RowKey vlastnosti a PartitionKey vlastnosti.

Můžete například vytvořit nový objekt, který implementuje alespoň všechny požadované vlastnosti v rozhraní ITableEntity :

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

Tento objekt pak můžete předat metodě AddEntityAsync<> , která vytvoří položku na straně serveru:

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

Další kroky

Když jste teď vytvořili různé položky, přečtěte si položku pomocí další příručky.