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


Краткое руководство. Библиотека таблиц Azure Cosmos DB для .NET

Область применения: Таблица

В этом кратком руководстве показано, как приступить к работе с Azure Cosmos DB для таблицы из приложения .NET. Azure Cosmos DB для таблицы — это хранилище данных без схемы, позволяющее приложениям хранить структурированные данные таблицы в облаке. Вы узнаете, как создавать таблицы, строки и выполнять основные задачи в ресурсе Azure Cosmos DB с помощью azure SDK для .NET

Пакет исходного кода библиотеки исходного кода | библиотеки | API (NuGet) | Azure Developer CLI

Необходимые компоненты

Инициализация проекта

Используйте интерфейс командной строки разработчика Azure (azd) для создания учетной записи Azure Cosmos DB для таблицы и развертывания контейнерного примера приложения. Пример приложения использует клиентская библиотека для управления, создания, чтения и запроса примеров данных.

  1. Откройте терминал в пустом каталоге.

  2. Если вы еще не прошли проверку подлинности, выполните проверку подлинности в интерфейсе командной строки разработчика Azure с помощью azd auth login. Выполните действия, указанные средством для проверки подлинности в CLI с помощью предпочитаемых учетных данных Azure.

    azd auth login
    
  3. Используется azd init для инициализации проекта.

    azd init --template cosmos-db-table-dotnet-quickstart
    
  4. Во время инициализации настройте уникальное имя среды.

  5. Разверните учетную запись Azure Cosmos DB с помощью azd up. Шаблоны Bicep также развертывают пример веб-приложения.

    azd up
    
  6. В процессе подготовки выберите подписку, требуемое расположение и целевую группу ресурсов. Дождитесь завершения процесса подготовки. Процесс может занять около пяти минут.

  7. После завершения подготовки ресурсов Azure в выходные данные будет включен URL-адрес работающего веб-приложения.

    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. Используйте URL-адрес консоли для перехода к веб-приложению в браузере. Просмотрите выходные данные запущенного приложения.

    Снимок экрана: работающее веб-приложение.

Установка клиентской библиотеки

Клиентская библиотека доступна через NuGet в качестве Azure.Data.Tables пакета.

  1. Откройте терминал и перейдите в папку /src/web .

    cd ./src/web
    
  2. Если пакет еще не установлен, установите Azure.Data.Tables его с помощью dotnet add package.

    dotnet add package Azure.Data.Tables
    
  3. Откройте и просмотрите файл src/web/Microsoft.Samples.Cosmos.Table.Quickstart.Web.csproj , чтобы проверить наличие Azure.Data.Tables записи.

Объектная модель

Имя Описание
TableServiceClient Этот класс является основным клиентским классом и используется для управления метаданными или базами данных на уровне учетной записи.
TableClient Этот класс представляет клиент для таблицы в учетной записи.

Примеры кода

Пример кода в шаблоне использует таблицу с именем cosmicworks-products. В cosmicworks-products таблице содержатся такие сведения, как имя, категория, количество, цена, уникальный идентификатор и флаг продажи для каждого продукта. Контейнер использует уникальный идентификатор* в качестве ключа строки и категории в качестве ключа секции.

аутентификация клиента;

В этом примере создается новый экземпляр TableServiceClient класса.

TableServiceClient serviceClient = new(
    endpoint: new Uri("<azure-cosmos-db-table-account-endpoint>"),
    credential
);

Получение таблицы

В этом примере создается экземпляр TableClient класса с помощью GetTableClient метода TableServiceClient класса.

TableClient client = serviceClient.GetTableClient(
    tableName: "<azure-cosmos-db-table-name>"
);

Создание элемента

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

public record Product : ITableEntity
{
    public string RowKey { get; set; } = $"{Guid.NewGuid()}";

    public string PartitionKey { get; set; } = String.Empty;

    public string Name { get; set; } = String.Empty;

    public int Quantity { get; set; } = 0;

    public decimal Price { get; set; } = 0.0m;

    public bool Clearance { get; set; } = false;

    public ETag ETag { get; set; } = ETag.All;

    public DateTimeOffset? Timestamp { get; set; }
};

Создайте элемент в коллекции, используя класс Product, вызвав TableClient.AddEntityAsync<T>.

Product entity = new()
{
    RowKey = "68719518391",
    PartitionKey = "gear-surf-surfboards",
    Name = "Surfboard",
    Quantity = 10,
    Price = 300.00m,
    Clearance = true
};

Response response = await client.UpsertEntityAsync<Product>(
    entity: entity,
    mode: TableUpdateMode.Replace
);

Получение элемента

Вы можете извлечь конкретный элемент из таблицы с помощью метода TableClient.GetEntityAsync<T>. Укажите partitionKey и rowKey в качестве параметров, чтобы определить правильную запись для выполнения быстрого считывания точки этого элемента.

Response<Product> response = await client.GetEntityAsync<Product>(
    rowKey: "68719518391",
    partitionKey: "gear-surf-surfboards"
);

Элементы запроса

После вставки элемента вы также можете выполнить запрос, чтобы получить все элементы, соответствующие определенному фильтру, с помощью метода TableClient.Query<T>. В этом примере продукты фильтруются по категориям с помощью синтаксиса Linq, что является преимуществом использования типизированных моделей ITableEntity, таких как класс Product.

Примечание.

Вы также можете запрашивать элементы, используя синтаксис OData. Вы можете увидеть пример этого подхода в руководстве по запросу данных.

string category = "gear-surf-surfboards";

AsyncPageable<Product> results = client.QueryAsync<Product>(
    product => product.PartitionKey == category
);

Анализ результатов запроса с разбивкой на страницы путем цикла по каждой странице результатов с помощью асинхронного цикла.

List<Product> entities = new();
await foreach (Product product in results)
{
    entities.Add(product);
}

Очистка ресурсов

Если вам больше не нужен пример приложения или ресурсов, удалите соответствующее развертывание и все ресурсы.

azd down