Aracılığıyla paylaş


.NET kullanarak Tablo için Azure Cosmos DB'de öğe oluşturma

ŞUNLAR IÇIN GEÇERLIDIR: Masa

Azure Cosmos DB'deki öğeler, bir tabloda depolanan belirli bir varlığı temsil eder. Tablo API'sinde bir öğe, satır ve bölüm anahtarlarının bileşimi tarafından benzersiz olarak tanımlanan bir dizi anahtar-değer çifti içerir.

Öğe için benzersiz tanımlayıcı oluşturma

Program aracılığıyla **** olarak bilinen benzersiz tanımlayıcı, tablo içindeki bir öğeyi tanımlayan ayrı bir dizedir. Her öğe, öğenin mantıksal bölümünü belirlemek için kullanılan bir bölüm anahtarı değeri de içerir. Tablo içinde yeni bir öğe oluştururken her iki anahtar da gereklidir.

Tablo kapsamında, iki öğe hem aynı satır anahtarını hem de bölüm anahtarını paylaşamaz.

Öğe oluşturma

TableEntity sınıfı, anahtar-değer çiftlerinin rastgele bir sözlüğünden yeni bir öğe oluşturmayı kolaylaştırmak için benzersiz olarak tasarlanmış bir sözlüğün genel uygulamasıdır.

Tabloda oluşturmak istediğiniz öğeleri modellemek için aşağıdaki stratejilerden birini kullanın:

Yerleşik sınıf kullanma

(string rowKey, string partitionKey) TableEntity sınıfının oluşturucu, yalnızca gerekli özelliklere sahip bir öğe oluşturmanın hızlı bir yoludur. Ardından, öğeye Add fazladan anahtar-değer çiftleri eklemek için yöntemini kullanabilirsiniz.

Örneğin, önce oluşturucuda satır ve bölüm anahtarlarını belirtip ardından sözlüğe yeni anahtar-değer çiftleri ekleyerek TableEntity sınıfının yeni bir örneğini oluşturabilirsiniz:

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

(IDictionary<string, object>) TableEntity sınıfının oluşturucusunun varolan bir sözlüğü tabloya eklenmeye hazır bir öğeye dönüştürmesi.

Örneğin, bir sözlüğü TableEntity sınıfının yeni bir örneğine geçirebilirsiniz:

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

yöntemi TableEntity TableClient.AddEntityAsync<> türünde bir parametre alır ve tabloda sunucu tarafı bir öğe oluşturur.

Arabirim uygulama

Not

Bu bölümdeki örneklerde, Product adlı verilerinizi temsil eden bir C# türü tanımladığınız varsayılır:

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

yöntemi, TableClient.AddEntityAsync<> arabirimini uygulayan ITableEntity herhangi bir türde bir parametre alır. Arabirim zaten gerekli RowKey ve PartitionKey özellikleri içerir.

Örneğin, ITableEntity arabiriminde gerekli özelliklerin en az tümünü uygulayan yeni bir nesne oluşturabilirsiniz:

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

Ardından bu nesneyi AddEntityAsync<> yöntemine geçirerek sunucu tarafı öğesi oluşturabilirsiniz:

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

Sonraki adımlar

Artık çeşitli öğeler oluşturduğunuza göre, bir öğeyi okumak için sonraki kılavuzu kullanın.