Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Important
Вы ищете решение для баз данных для крупномасштабных сценариев с соглашением об уровне обслуживания (SLA) с доступностью 99,999%, мгновенным автомасштабированием и автоматическим переключением на резервные ресурсы в нескольких регионах? Рассмотрим Azure Cosmos DB для NoSQL.
В этом кратком руководстве описано, как развернуть базовое приложение Azure Cosmos DB для таблиц с помощью пакета SDK Azure для .NET. Azure Cosmos DB для таблицы — это хранилище данных без схемы, позволяющее приложениям хранить структурированные данные таблицы в облаке. Вы узнаете, как создавать таблицы, строки и выполнять основные задачи в ресурсе Azure Cosmos DB с помощью пакета SDK Azure для .NET.
Справочная документация по API | Исходный код библиотеки | Пакет (NuGet) | Azure Developer CLI
Предпосылки
- Azure Developer CLI (Интерфейс командной строки для разработчиков Azure)
- Docker Desktop
- .NET 9.0
Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.
Инициализация проекта
Используйте интерфейс командной строки разработчика 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записи.
Импорт библиотек
Импортируйте пространства имен Azure.Identity и Azure.Data.Tables в код приложения.
using Azure.Identity;
using Azure.Data.Tables;
Объектная модель
| Name | Description |
|---|---|
| TableServiceClient | Этот класс является основным клиентским классом и используется для управления метаданными или базами данных на уровне учетной записи. |
| TableClient | Этот класс представляет клиента для таблицы в учётной записи. |
Примеры кода
Пример кода в шаблоне использует таблицу с именем cosmicworks-products. В cosmicworks-products таблице содержатся такие сведения, как имя, категория, количество, цена, уникальный идентификатор и флаг продажи для каждого продукта. Контейнер использует уникальный идентификатор в качестве ключа строки и категории в качестве ключа секции.
аутентификация клиента;
В этом примере создается новый экземпляр TableServiceClient класса.
DefaultAzureCredential credential = new();
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 required string RowKey { get; set; }
public required string PartitionKey { get; set; }
public required string Name { get; set; }
public required int Quantity { get; set; }
public required decimal Price { get; set; }
public required bool Clearance { get; set; }
public ETag ETag { get; set; } = ETag.All;
public DateTimeOffset? Timestamp { get; set; }
};
Создайте сущность в таблице с помощью Product класса путем вызова TableClient.AddEntityAsync<T>.
Product entity = new()
{
RowKey = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
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: "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
partitionKey: "gear-surf-surfboards"
);
Запрос сущностей
После вставки сущности можно также запустить запрос, чтобы получить все сущности, соответствующие определенному фильтру TableClient.Query<T> , с помощью метода. В этом примере продукты фильтруются по категориям с помощью синтаксиса LINQ, который является преимуществом использования типизированных ITableEntity моделей, таких как Product класс.
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