Bagikan melalui


Mulai cepat: Azure Cosmos DB untuk pustaka NoSQL untuk .NET

BERLAKU UNTUK: NoSQL

Mulai menggunakan pustaka klien Azure Cosmos DB for NoSQL untuk .NET untuk mengkueri data dalam kontainer Anda dan melakukan operasi umum pada item individual. Ikuti langkah-langkah ini untuk menyebarkan solusi minimal ke lingkungan Anda menggunakan Azure Developer CLI.

Dokumentasi | referensi API Paket kode | sumber pustaka (NuGet) | Azure Developer CLI

Prasyarat

Menyiapkan

Sebarkan kontainer pengembangan proyek ini ke lingkungan Anda. Kemudian, gunakan Azure Developer CLI (azd) untuk membuat akun Azure Cosmos DB for NoSQL dan menyebarkan aplikasi sampel dalam kontainer. Aplikasi sampel menggunakan pustaka klien untuk mengelola, membuat, membaca, dan mengkueri data sampel.

Buka di GitHub Codespaces

Buka di Kontainer Dev

Penting

Akun GitHub mencakup pemberian izin penyimpanan dan jam inti tanpa biaya. Untuk informasi selengkapnya, lihat penyimpanan dan jam inti yang disertakan untuk akun GitHub.

  1. Buka terminal di direktori akar proyek.

  2. Autentikasi ke Azure Developer CLI menggunakan azd auth login. Ikuti langkah-langkah yang ditentukan oleh alat untuk mengautentikasi ke CLI menggunakan kredensial Azure pilihan Anda.

    azd auth login
    
  3. Gunakan azd init untuk menginisialisasi proyek.

    azd init --template cosmos-db-nosql-dotnet-quickstart
    

    Catatan

    Mulai cepat ini menggunakan repositori GitHub templat azure-samples/cosmos-db-nosql-dotnet-quickstart . Azure Developer CLI akan secara otomatis mengkloning proyek ini ke komputer Anda jika belum ada.

  4. Selama inisialisasi, konfigurasikan nama lingkungan yang unik.

    Tip

    Nama lingkungan juga akan digunakan sebagai nama grup sumber daya target. Untuk mulai cepat ini, pertimbangkan untuk menggunakan msdocs-cosmos-db.

  5. Sebarkan akun Azure Cosmos DB menggunakan azd up. Templat Bicep juga menyebarkan aplikasi web sampel.

    azd up
    
  6. Selama proses provisi, pilih langganan dan lokasi yang Anda inginkan. Tunggu hingga proses provisi selesai. Prosesnya dapat memakan waktu sekitar lima menit.

  7. Setelah provisi sumber daya Azure Anda selesai, URL ke aplikasi web yang sedang berjalan disertakan dalam output.

    Deploying services (azd deploy)
    
      (✓) Done: Deploying service web
    - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io>
    
    SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
    
  8. Gunakan URL di konsol untuk menavigasi ke aplikasi web Anda di browser. Amati output aplikasi yang sedang berjalan.

    Cuplikan layar aplikasi web yang sedang berjalan.

Memasang pustaka klien

Pustaka klien tersedia melalui NuGet, sebagai Microsoft.Azure.Cosmos paket.

  1. Buka terminal dan navigasi ke /src/web folder .

    cd ./src/web
    
  2. Jika belum diinstal, instal Microsoft.Azure.Cosmos paket menggunakan dotnet add package.

    dotnet add package Microsoft.Azure.Cosmos --version 3.*
    
  3. Selain itu Azure.Identity , instal paket jika belum diinstal.

    dotnet add package Azure.Identity --version 1.12.*
    
  4. Buka dan tinjau file src/web/Cosmos.Samples.NoSQL.Quickstart.Web.csproj untuk memvalidasi bahwa Microsoft.Azure.Cosmos entri dan Azure.Identity keduanya ada.

Model objek

Nama Deskripsi
CosmosClient Kelas ini adalah kelas klien utama dan digunakan untuk mengelola metadata atau database di seluruh akun.
Database Kelas ini mewakili database dalam akun.
Container Kelas ini terutama digunakan untuk melakukan operasi baca, perbarui, dan hapus pada kontainer atau item yang disimpan dalam kontainer.
PartitionKey Kelas ini mewakili kunci partisi logis. Kelas ini diperlukan untuk banyak operasi dan kueri umum.

Contoh kode

Kode sampel dalam templat menggunakan database bernama cosmicworks dan kontainer bernama products. Kontainer products berisi detail seperti nama, kategori, kuantitas, pengidentifikasi unik, dan bendera penjualan untuk setiap produk. Kontainer menggunakan /category properti sebagai kunci partisi logis.

Mengautentikasi klien

Permintaan aplikasi ke sebagian besar layanan Azure harus diotorisasi. DefaultAzureCredential Gunakan jenis sebagai cara yang disukai untuk menerapkan koneksi tanpa kata sandi antara aplikasi Anda dan Azure Cosmos DB untuk NoSQL. DefaultAzureCredential mendukung beberapa metode autentikasi dan menentukan metode autentikasi yang harus digunakan saat runtime bahasa umum.

Penting

Anda juga dapat mengotorisasi permintaan ke layanan Azure menggunakan kata sandi, string koneksi, atau kredensial lainnya secara langsung. Namun, pendekatan ini harus digunakan dengan hati-hati. Pengembang harus rajin untuk tidak pernah mengekspos rahasia ini di lokasi yang tidak aman. Siapa pun yang mendapatkan akses ke kata sandi atau kunci rahasia dapat mengautentikasi ke layanan database. DefaultAzureCredential menawarkan manfaat manajemen dan keamanan yang ditingkatkan atas kunci akun untuk memungkinkan autentikasi tanpa kata sandi tanpa risiko menyimpan kunci.

Sampel ini membuat instans CosmosClient baru kelas dan mengautentikasi menggunakan DefaultAzureCredential instans.

DefaultAzureCredential credential = new();

CosmosClient client = new(
    accountEndpoint: "<azure-cosmos-db-nosql-account-endpoint>",
    tokenCredential: new DefaultAzureCredential()
);

Mendapatkan database

Gunakan client.GetDatabase untuk mengambil database yang sudah ada bernama cosmicworks.

Database database = client.GetDatabase("cosmicworks");

Mendapatkan kontainer

Ambil kontainer yang products ada menggunakan database.GetContainer.

Container container = database.GetContainer("products");

Membuat item

Buat jenis catatan C# dengan semua anggota yang ingin Anda serialkan ke JSON. Dalam contoh ini, jenis memiliki pengidentifikasi unik, dan bidang untuk kategori, nama, kuantitas, harga, dan penjualan.

public record Product(
    string id,
    string category,
    string name,
    int quantity,
    decimal price,
    bool clearance
);

Buat item dalam kontainer menggunakan container.UpsertItem. Metode ini "upsert" item secara efektif mengganti item jika sudah ada.

Product item = new(
    id: "68719518391",
    category: "gear-surf-surfboards",
    name: "Yamba Surfboard",
    quantity: 12,
    price: 850.00m,
    clearance: false
);

ItemResponse<Product> response = await container.UpsertItemAsync<Product>(
    item: item,
    partitionKey: new PartitionKey("gear-surf-surfboards")
);

Baca item

Lakukan operasi baca titik dengan menggunakan bidang pengidentifikasi unik (id) dan kunci partisi. Gunakan container.ReadItem untuk mengambil item tertentu secara efisien.

ItemResponse<Product> response = await container.ReadItemAsync<Product>(
    id: "68719518391",
    partitionKey: new PartitionKey("gear-surf-surfboards")
);

Buat kueri item

Lakukan kueri melalui beberapa item dalam kontainer menggunakan container.GetItemQueryIterator. Temukan semua item dalam kategori tertentu menggunakan kueri berparameter ini:

SELECT * FROM products p WHERE p.category = @category
string query = "SELECT * FROM products p WHERE p.category = @category"

var query = new QueryDefinition(query)
  .WithParameter("@category", "gear-surf-surfboards");

using FeedIterator<Product> feed = container.GetItemQueryIterator<Product>(
    queryDefinition: query
);

Uraikan hasil kueri yang dipaginasi dengan mengulangi setiap halaman hasil menggunakan feed.ReadNextAsync. Gunakan feed.HasMoreResults untuk menentukan apakah ada hasil yang tersisa di awal setiap perulangan.

List<Product> items = new();
while (feed.HasMoreResults)
{
    FeedResponse<Product> response = await feed.ReadNextAsync();
    foreach (Product item in response)
    {
        items.Add(item);
    }
}

Membersihkan sumber daya

Saat Anda tidak lagi memerlukan aplikasi sampel atau sumber daya, hapus penyebaran dan semua sumber daya yang sesuai.

azd down

Di GitHub Codespaces, hapus codespace yang sedang berjalan untuk memaksimalkan penyimpanan dan penetapan inti Anda.