Latihan - Membuat API untuk akun dan sumber daya NoSQL

Selesai

Sekarang Anda dapat membuat berbagai sumber daya—seperti database, kontainer, dan item—yang Anda gunakan di akun Azure Cosmos DB Anda. Untuk latihan ini, Anda membuat database bernama cosmicworks dengan satu kontainer bernama products. Anda perlu memastikan bahwa kode tidak mengalami crash saat mencoba membuat ulang kontainer jika Anda menjalankan aplikasi konsol ini beberapa kali.

Saat ini, Anda memiliki dua persyaratan kunci:

  1. Membuat database jika belum ada
  2. Membuat kontainer jika belum ada

Illustration of icons indicating Azure Cosmos DB resources are created in the cloud.

Setelah Anda menyelesaikan latihan ini, proyek Anda akan membuat database atau kontainer apa pun yang diperlukan untuk dijalankan.

Membuat database

SDK berisi metode berguna yang membuat sumber daya baru jika belum ada. Dengan menggunakan metode ini, Anda dapat menjalankan aplikasi beberapa kali tanpa mengkhawatirkan pengecualian yang diangkat oleh konflik. Di sini, Anda membuat database.

  1. Kembali ke file Program.cs .

  2. Buat, atau dapatkan, database baru dengan memanggil CreateDatabaseIfNotExistsAsync(String, ThroughputProperties, RequestOptions, CancellationToken). Simpan hasilnya di variabel bernama database. Pastikan untuk mengatur parameter ini:

    Parameter Value
    id cosmicworks
    Database database = await client.CreateDatabaseIfNotExistsAsync(
        id: "cosmicworks"
    );
    
  3. Keluarkan pengenal unik untuk database.

    Console.WriteLine($"[Database created]:\t{database.Id}");
    
  4. Simpan file Program.cs.

Membuat kontainer

Di sini, Anda membuat kontainer dengan "ikhtisar" tertentu dari throughput bersama dari database.

  1. Buat objek properti untuk kontainer baru menggunakan jenis .ContainerProperties Simpan hasilnya di variabel bernama properties. Pastikan untuk mengatur parameter ini:

    Parameter Value
    id products
    partitionKeyPath /categoryId
    ContainerProperties properties = new(
        id: "products",
        partitionKeyPath: "/categoryId"
    );
    
  2. Buat objek throughput skala otomatis menggunakan CreateAutoscaleThroughput(Int32) metode statis. Simpan hasilnya di variabel bernama throughput. Pastikan untuk mengatur parameter ini:

    Parameter Value
    autoscaleMaxThroughput 1000
    var throughput = ThroughputProperties.CreateAutoscaleThroughput(
        autoscaleMaxThroughput: 1000
    );
    
  3. Buat, atau dapatkan, kontainer baru dengan memanggil CreateContainerIfNotExistsAsync(String, String, Nullable<Int32>, RequestOptions, CancellationToken). Simpan hasilnya di variabel bernama container. Pastikan untuk mengatur parameter ini:

    Container container = await database.CreateContainerIfNotExistsAsync(
        containerProperties: properties,
        throughputProperties: throughput
    );
    
  4. Sekarang, keluarkan pengenal unik untuk kontainer.

    Console.WriteLine($"[Container created]:\t{container.Id}");
    
  5. Simpan file Program.cs.

Membuat tipe catatan untuk item

Data C# dapat diwakili menggunakan berbagai jenis termasuk kelas, struktur, dan rekaman. Untuk SDK ini, rekaman berguna karena tidak dapat diubah secara default. Anda masih dapat menambahkan kode untuk membuat salinan rekaman yang dimodifikasi jika perlu. Rekaman juga memiliki sintaks yang mudah dibaca dan cepat dibuat hanya dengan beberapa baris kode. Di bagian ini, Anda membuat jenis dasar untuk semua item dan jenis individual untuk setiap "jenis" item.

  1. Menggunakan Visual Studio Code, buat file baru bernama Item.cs. Kemudian, buka file di editor.

  2. Buat jenis catatan dasar bernama Item yang membawa tiga properti yang ingin Anda gunakan di semua item untuk kontainer ini: id, categoryId, dan type.

    public record Item(
        string Id,
        string CategoryId,
        string Type
    );
    
  3. Simpan file Item.cs. Tutup file Item.cs.

  4. Buat file baru lain bernama Category.cs. Buka file ini di editor sekarang.

  5. Buat jenis baru bernama Kategori yang mewarisi jenis Item. Pastikan jenis ini meneruskan nilainya ke implementasi dasar dan mengatur variabel jenis untuk menghasilkan nama jenis Kategori.

    public record Category(
        string Id,
        string CategoryId
    ) : Item(
        Id,
        CategoryId,
        nameof(Category)
    );
    
  6. Simpan file Category.cs. Tutup file Category.cs.

  7. Terakhir, buat satu file terakhir bernama Product.cs. Buka file ini di editor juga.

  8. Buat jenis baru bernama Produk yang mewarisi dari Item dan tambahkan beberapa properti baru: name, price, archived, dan quantity.

    public record Product(
        string Id,
        string CategoryId
    ) : Item(
        Id,
        CategoryId,
        nameof(Product)
    )
    {
        public string Name { get; init; } = default!;
        public decimal Price { get; init; }
        public bool Archived { get; init; }
        public int Quantity { get; init; }
    };
    
  9. Simpan file Product.cs. Tutup file Product.cs.

Periksa pekerjaan Anda

Aplikasi Anda sekarang membuat database dan kontainer. Metode yang Anda gunakan untuk membuat sumber daya ini cukup tangguh untuk dijalankan beberapa kali tanpa menyebabkan pengecualian. Di sini, Anda menjalankan aplikasi dan memeriksa output untuk pengidentifikasi unik dari kedua sumber daya.

  1. Jalankan aplikasi .NET di terminal

    dotnet run
    
  2. Amati output dari menjalankan aplikasi. Output harus cocok dengan contoh di sini:

    ...
    [Database created]:     cosmicworks
    [Container created]:    products