Samouczek: używanie bazy danych Cosmos DB z poziomu aplikacji Windows

Ten artykuł zawiera kroki wymagane do włączenia pracy z bazą danych Cosmos DB z poziomu aplikacji Windows. Zawiera również mały fragment kodu pokazujący sposób interakcji z bazą danych w kodzie.

Konfigurowanie rozwiązania

Ten przykład może być używany z dowolnym projektem WPF, Windows Forms i WinUI w celu połączenia aplikacji systemu Windows z bazą danych Cosmos DB. Wykonaj następujące kroki, aby zainstalować pakiet i wypróbować przykładowy kod dla niektórych podstawowych zadań.

  1. Otwórz konsolę Package Manager (Wyświetl -> Inne Windows -> Package Manager Console). Użyj polecenia Install-Package Microsoft.Azure.Cosmos, aby zainstalować pakiet NuGet dla Azure Cosmos DB dla biblioteki klienta NoSQL dla .NET. Umożliwi to programowy dostęp do baz danych usługi Cosmos DB.
  2. Skompiluj projekt i upewnij się, że kompilacja zakończyła się pomyślnie bez błędów.

Następnie należy utworzyć wystąpienie usługi Cosmos DB w Azure. Możesz to zrobić, wykonując kroki opisane w Utwórz konto bazy danych NoSQL w Azure Cosmos DB.

Praca z usługą Cosmos DB przy użyciu przykładowego kodu

Poniższy przykładowy kod pobiera kontener z wystąpienia usługi Cosmos DB w Azure, a następnie dodaje nowy element do tego kontenera. Następnie używa interfejsu API zapytań NoSQL usługi Cosmos DB, aby pobrać element z kontenera i wyświetlić stan odpowiedzi. Należy pamiętać, że punkt końcowy, klucz uwierzytelniania i nazwa bazy danych trzeba dostosować na podstawie instancji usługi Cosmos DB utworzonej w poprzedniej sekcji.

Uwaga / Notatka

Zobacz kompletny przykład, w tym informacje o wymaganej konfiguracji usługi Cosmos DB, w Tworzenie aplikacji konsolowej .NET z Azure Cosmos DB dla 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}");
}