Självstudie: Använda en Cosmos DB-databas från en Windows-app

Den här artikeln innehåller de steg som krävs för att aktivera arbete med en Cosmos DB-databas från en Windows app. Den innehåller också ett litet kodfragment som visar hur du kan interagera med databasen i koden.

Konfigurera din lösning

Det här exemplet kan användas med valfritt WPF-, Windows Forms- och WinUI-projekt för att ansluta din Windows-app till en Cosmos DB-databas. Följ de här stegen för att installera paketet och prova exempelkod för vissa grundläggande uppgifter.

  1. Öppna konsolen Package Manager (Visa -> Annan Windows -> Package Manager-konsolen). Använd kommandot Install-Package Microsoft.Azure.Cosmos för att installera NuGet-paketet för Azure Cosmos DB för NoSQL klientbibliotek för .NET. På så sätt kan du programmatiskt komma åt Cosmos DB-databaser.
  2. Skapa projektet och se till att bygget lyckades utan fel.

Därefter måste du skapa en Cosmos DB-instans i Azure. Du kan göra detta genom att följa stegen i Skapa ett NoSQL databaskonto i Azure Cosmos DB.

Arbeta med Cosmos DB med hjälp av exempelkod

Följande exempelkod hämtar en container från en Cosmos DB-instans i Azure och lägger sedan till ett nytt objekt i containern. Sedan använder den Cosmos DB:s NoSQL fråge-API för att hämta objektet från containern och mata ut svarsstatusen. Observera att slutpunkten, autentiseringsnyckeln och databasnamnet måste anpassas baserat på den Cosmos DB-instans som du skapade i föregående avsnitt.

Anmärkning

Ett fullständigt exempel, inklusive information om nödvändig installation och konfiguration av Cosmos DB, finns i Utveckla ett .NET-konsolprogram med Azure Cosmos DB för NoSQL.

using Microsoft.Azure.Cosmos;

...

public async Task CosmosSample(string endpoint, string authKey)
{
    // CONNECT
    var client = new CosmosClient(
        accountEndpoint: endpoint,
        authKeyOrResourceToken: authKey
    );
    Database database = client.GetDatabase("sample_customers");
    ContainerProperties properties = new(
        id: "customers",
        partitionKeyPath: "/location"
    );
    Container container = await database.CreateContainerIfNotExistsAsync(properties);

    // WRITE DATA
    string customerId = "1234";
    string state = "WA";
    var customer = new
    {
        id = customerId,
        name = "John Doe",
        location = state
    };
    var createResponse = await container.CreateItemAsync(customer);
    Console.WriteLine($"[Status code: {createResponse.StatusCode}]\t{customerId}");

    // READ DATA
    string sql = "SELECT * FROM customers c WHERE c.id = @id";
    var query = new QueryDefinition(
        query: sql
    ).WithParameter("@id", customerId);
    using var feed = container.GetItemQueryIterator<dynamic>(queryDefinition: query);
    var queryResponse = await feed.ReadNextAsync();
    Console.WriteLine($"[Status code: {queryResponse.StatusCode}]\t{customerId}");
}