Поделиться через


Руководство. Использование базы данных Cosmos DB из приложения Windows

В этой статье содержатся шаги, необходимые для работы с базой данных Cosmos DB из приложения Windows. Здесь также приведены небольшие фрагменты кода, в которых показано, как с взаимодействовать с базами данных программным способом.

Настройка решения

Этот пример можно использовать с любым проектом WPF, Windows Forms и WinUI для подключения приложения Windows к базе данных Cosmos DB. Выполните следующие действия, чтобы установить пакет и попробовать пример кода для некоторых основных задач.

  1. Откройте консоль Package Manager Console (Вид -> Другие окна -> Package Manager Console). Используйте команду Install-Package Microsoft.Azure.Cosmos, чтобы установить пакет NuGet для Azure Cosmos DB для клиентской библиотеки NoSQL для .NET. Это позволит программным способом получить доступ к базам данных Cosmos DB.
  2. Создайте проект и убедитесь, что сборка успешно выполнена без ошибок.

Затем необходимо создать экземпляр Cosmos DB в Azure. Для этого выполните действия, описанные в Создание аккаунта базы данных NoSQL в Azure Cosmos DB.

Работа с Cosmos DB с помощью примера кода

Следующий пример кода получает контейнер из экземпляра Cosmos DB в Azure, а затем добавляет новый элемент в этот контейнер. Затем он использует API запросов Cosmos DB NoSQL для извлечения элемента из контейнера и вывода состояния ответа. Обратите внимание, что конечная точка, ключ проверки подлинности и имя базы данных должны быть настроены на основе экземпляра Cosmos DB, созданного в предыдущем разделе.

Примечание.

Полный пример, включая сведения о требуемой настройке и конфигурации Cosmos DB, см. в документе Разработка консольного приложения .NET с Azure Cosmos DB для 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}");
}