Jelajahi Microsoft .NET SDK v3 untuk Azure Cosmos DB

Selesai

Unit ini berfokus pada Azure Cosmos DB .NET SDK v3 untuk API untuk NoSQL. (Paket NuGet Microsoft.Azure.Cosmos .) Jika Anda terbiasa dengan versi .NET SDK sebelumnya, Anda mungkin terbiasa dengan kumpulan istilah dan dokumen.

Repositori GitHub azure-cosmos-dotnet-v3 menyertakan solusi sampel .NET terbaru. Anda menggunakan solusi ini untuk melakukan CRUD (membuat, membaca, memperbarui, dan menghapus) dan operasi umum lainnya pada sumber daya Azure Cosmos DB.

Karena Azure Cosmos DB mendukung beberapa model API, versi 3 dari .NET SDK menggunakan kontainer dan item istilah generik. Sebuah kontainer dapat berupa kumpulan, grafik, atau tabel. Sebuah item dapat berupa dokumen, edge/puncak, atau baris, dan merupakan konten di dalam kontainer.

Berikut ini adalah contoh yang menunjukkan beberapa operasi utama yang harus Anda kenal. Untuk contoh lainnya, silakan kunjungi tautan GitHub yang ditampilkan sebelumnya. Contoh di bawah ini semuanya menggunakan metode versi async.

CosmosClient

Membuat CosmosClient baru dengan string koneksi. CosmosClient aman untuk utas. Rekomendasinya adalah mempertahankan satu instans CosmosClient per masa pakai aplikasi yang memungkinkan manajemen dan performa koneksi yang efisien.

CosmosClient client = new CosmosClient(endpoint, key);

Contoh database

Membuat database

Metode ini CosmosClient.CreateDatabaseAsync melemparkan pengecualian jika database dengan nama yang sama sudah ada.

// New instance of Database class referencing the server-side database
Database database1 = await client.CreateDatabaseAsync(
    id: "adventureworks-1"
);

CosmosClient.CreateDatabaseIfNotExistsAsync memeriksa apakah database ada, dan jika belum ada, akan membuat database baru. Hanya database id yang digunakan untuk memverifikasi apakah ada database yang sudah ada.

// New instance of Database class referencing the server-side database
Database database2 = await client.CreateDatabaseIfNotExistsAsync(
    id: "adventureworks-2"
);

Baca database menurut ID

Membaca database dari layanan Azure Cosmos DB sebagai operasi asinkron.

DatabaseResponse readResponse = await database.ReadAsync();

Menghapus database

Hapus Database sebagai operasi asinkron.

await database.DeleteAsync();

Contoh kontainer

Membuat kontainer

Metode Database.CreateContainerIfNotExistsAsync memeriksa apakah kontainer ada, dan jika belum ada, akan membuat kontainer baru. Hanya kontainer id yang digunakan untuk memverifikasi apakah ada kontainer yang ada.

// Set throughput to the minimum value of 400 RU/s
ContainerResponse simpleContainer = await database.CreateContainerIfNotExistsAsync(
    id: containerId,
    partitionKeyPath: partitionKey,
    throughput: 400);

Mendapatkan kontainer menurut ID

Container container = database.GetContainer(containerId);
ContainerProperties containerProperties = await container.ReadContainerAsync();

Menghapus kontainer

Hapus Kontainer sebagai operasi asinkron.

await database.GetContainer(containerId).DeleteContainerAsync();

Contoh item

Membuat item

Gunakan metode Container.CreateItemAsync untuk membuat item. Metode ini memerlukan objek serial JSON yang harus berisi properti id, dan partitionKey.

ItemResponse<SalesOrder> response = await container.CreateItemAsync(salesOrder, new PartitionKey(salesOrder.AccountNumber));

Baca item

Gunakan metode Container.ReadItemAsync untuk membaca item. Metode ini memerlukan jenis untuk membuat serial item bersama dengan properti id, dan partitionKey.

string id = "[id]";
string accountNumber = "[partition-key]";
ItemResponse<SalesOrder> response = await container.ReadItemAsync(id, new PartitionKey(accountNumber));

Membuat kueri item

Metode Container.GetItemQueryIterator membuat kueri untuk item di bagian kontainer di database Azure Cosmos menggunakan pernyataan SQL dengan nilai parameter. Hal ini menampilkan FeedIterator.

QueryDefinition query = new QueryDefinition(
    "select * from sales s where s.AccountNumber = @AccountInput ")
    .WithParameter("@AccountInput", "Account1");

FeedIterator<SalesOrder> resultSet = container.GetItemQueryIterator<SalesOrder>(
    query,
    requestOptions: new QueryRequestOptions()
    {
        PartitionKey = new PartitionKey("Account1"),
        MaxItemCount = 1
    });

Sumber daya lainnya