Упражнение. Создание учетной записи и ресурсов API для NoSQL

Завершено

Теперь вы можете создавать различные ресурсы, такие как базы данных, контейнеры и элементы, которые используются в учетной записи Azure Cosmos DB. В этом упражнении вы создадите базу данных с именем cosmicworks с одним контейнером с именем products. При многократном запуске консольного приложения необходимо убедиться, что код не завершает работу при попытке повторного создания контейнера.

Сейчас у вас есть несколько основных требований:

  1. Создать базу данных, если она еще не существует.
  2. Создать контейнер, если он еще не существует.

Иллюстрация: значки, указывающие, что ресурсы Azure Cosmos DB создаются в облаке.

После выполнения этого упражнения проект создаст все базы данных или контейнеры, необходимые для выполнения.

Создание базы данных

Пакет SDK содержит полезные методы, которые создают новый ресурс, если он еще не существует. С помощью этих методов можно запускать приложение несколько раз, не беспокоясь об исключениях, вызванных конфликтами. Здесь вы создадите базу данных.

  1. Вернитесь в файл Program.cs .

  2. Создайте или получите новую базу данных путем вызова CreateDatabaseIfNotExistsAsync(String, ThroughputProperties, RequestOptions, CancellationToken). Сохраните результат в переменной под названием database. Обязательно задайте следующие параметры:

    Параметр Значение
    id cosmicworks
    Database database = await client.CreateDatabaseIfNotExistsAsync(
        id: "cosmicworks"
    );
    
  3. Выведите уникальный идентификатор для базы данных.

    Console.WriteLine($"[Database created]:\t{database.Id}");
    
  4. Сохраните файл Program.cs.

Создание контейнера

Здесь вы создадите контейнер с определенным "срезом" общей пропускной способности из базы данных.

  1. Вернитесь в файл Program.cs еще раз.

  2. Создайте или получите новый контейнер путем вызова CreateContainerIfNotExistsAsync(String, String, Nullable<Int32>, RequestOptions, CancellationToken). Сохраните результат в переменной под названием container. Обязательно задайте следующие параметры:

    Параметр Значение
    id products
    partitionKeyPath /categoryId
    throughput 400
    Container container = await database.CreateContainerIfNotExistsAsync(
        id: "products",
        partitionKeyPath: "/categoryId",
        throughput: 400
    );
    
  3. Теперь выведите уникальный идентификатор для контейнера.

    Console.WriteLine($"[Container created]:\t{container.Id}");
    
  4. Сохраните файл Program.cs.

Создание типов записей для элементов

Данные C# можно представить с помощью различных типов, включая классы, структуры и записи. Для этого пакета SDK записи полезны, так как по умолчанию они являются неизменяемыми. Вы по-прежнему можете добавить код для создания измененной копии записи, если это необходимо. Записи также имеют удобный для чтения синтаксис и быстро создаются с помощью всего нескольких строк кода. В этом разделе вы создадите базовый тип для всех элементов и отдельные типы для каждого "типа" элемента.

  1. С помощью Visual Studio Code создайте файл с именем Item.cs. Затем откройте файл в редакторе.

  2. Создайте базовый тип записи с именем Item , который содержит три свойства, которые необходимо использовать во всех элементах этого контейнера: id, categoryIdи type.

    public record Item(
        string Id,
        string CategoryId,
        string Type
    );
    
  3. Сохраните файл Item.cs. Закройте файл Item.cs .

  4. Создайте еще один файл с именем Category.cs. Откройте этот файл в редакторе.

  5. Создайте тип под названием Category, который наследуется от типа Item. Убедитесь, что тип передает свои значения в базовую реализацию и задает переменную type, чтобы вывести имя типа Category.

    public record Category(
        string Id,
        string CategoryId
    ) : Item(
        Id,
        CategoryId,
        nameof(Category)
    );
    
  6. Сохраните файл Category.cs. Закройте файл Category.cs .

  7. Наконец, создайте последний файл с именем Product.cs. Откройте этот файл и в редакторе.

  8. Создайте новый тип под названием Product, который наследуется от Item и добавляет несколько новых свойств: name, price, archived и 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. Сохраните файл Product.cs. Закройте файл Product.cs .

Проверьте выполненную работу

Теперь приложение создает базу данных и контейнер. Методы, используемые для создания этих ресурсов, достаточно устойчивые для многократного запуска без исключения. Здесь вы запустите приложение и проверка выходные данные для уникальных идентификаторов обоих ресурсов.

  1. Запустите приложение .NET в терминале.

    dotnet run
    
  2. Просмотрите выходные данные запуска приложения. Выходные данные должны соответствовать приведенному ниже примеру:

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