Краткое руководство. Библиотека таблиц Azure Cosmos DB для .NET
Область применения: Таблица
В этом кратком руководстве показано, как приступить к работе с Azure Cosmos DB для таблицы из приложения .NET. Azure Cosmos DB для таблицы — это хранилище данных без схемы, позволяющее приложениям хранить структурированные данные таблицы в облаке. Вы узнаете, как создавать таблицы, строки и выполнять основные задачи в ресурсе Azure Cosmos DB с помощью azure SDK для .NET
Пакет исходного кода библиотеки исходного кода | библиотеки | API (NuGet) | Azure Developer CLI
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Интерфейс командной строки разработчика Azure
- Docker Desktop
- .NET 9.0
Инициализация проекта
Используйте интерфейс командной строки разработчика Azure (azd
) для создания учетной записи Azure Cosmos DB для таблицы и развертывания контейнерного примера приложения. Пример приложения использует клиентская библиотека для управления, создания, чтения и запроса примеров данных.
Откройте терминал в пустом каталоге.
Если вы еще не прошли проверку подлинности, выполните проверку подлинности в интерфейсе командной строки разработчика Azure с помощью
azd auth login
. Выполните действия, указанные средством для проверки подлинности в CLI с помощью предпочитаемых учетных данных Azure.azd auth login
Используется
azd init
для инициализации проекта.azd init --template cosmos-db-table-dotnet-quickstart
Во время инициализации настройте уникальное имя среды.
Разверните учетную запись Azure Cosmos DB с помощью
azd up
. Шаблоны Bicep также развертывают пример веб-приложения.azd up
В процессе подготовки выберите подписку, требуемое расположение и целевую группу ресурсов. Дождитесь завершения процесса подготовки. Процесс может занять около пяти минут.
После завершения подготовки ресурсов 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.
Используйте URL-адрес консоли для перехода к веб-приложению в браузере. Просмотрите выходные данные запущенного приложения.
Установка клиентской библиотеки
Клиентская библиотека доступна через NuGet в качестве Azure.Data.Tables
пакета.
Откройте терминал и перейдите в папку
/src/web
.cd ./src/web
Если пакет еще не установлен, установите
Azure.Data.Tables
его с помощьюdotnet add package
.dotnet add package Azure.Data.Tables
Откройте и просмотрите файл 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