练习:使用 Microsoft .NET SDK v3 创建资源
在本练习中,你要创建一个控制台应用,以在 Azure Cosmos DB 中执行以下操作:
- 连接到 Azure Cosmos DB 帐户
- 创建数据库
- 创建容器
先决条件
具有活动订阅的 Azure 帐户。 如果你还没有,可在 https://azure.com/free 注册免费试用版。
安装在某个受支持的平台上的 Visual Studio Code。
.NET 8 是练习的目标框架。
Visual Studio Code 的 C# 扩展。
本地安装的最新 Azure CLI 工具。
设置
请执行以下操作,准备好 Azure 以及本地环境以进行练习。
连接到 Azure
开启 Visual Studio Code,从顶部应用程序栏选择“终端”并选择“新建终端”以打开终端窗口。
使用以下命令登录到 Azure。 应会打开一个浏览器窗口,用于选择要登录的帐户。
az login
在 Azure 中创建资源
为此练习所需的资源创建资源组。 将
<myLocation>
替换为自己附近的区域。az group create --location <myLocation> --name az204-cosmos-rg
创建 Azure Cosmos DB 帐户。 将
<myCosmosDBacct>
替换为一个唯一名称以标识自己的 Azure Cosmos DB 帐户。 名称只能包含小写字母、数字和连字符 (-)。 它的长度必须介于 3 到 31 个字符之间。 此命令需要几分钟时间才能完成。az cosmosdb create --name <myCosmosDBacct> --resource-group az204-cosmos-rg
记录 JSON 响应中显示的
documentEndpoint
,稍后的练习中会用到它。使用下面的命令检索帐户的主键。 记录命令结果中的
primaryMasterKey
,代码中会用到它。# Retrieve the primary key az cosmosdb keys list --name <myCosmosDBacct> --resource-group az204-cosmos-rg
设置控制台应用程序
在将所需的资源部署到 Azure 后,下一步是使用 Visual Studio Code 中同一终端窗口设置控制台应用程序。
为该项目创建一个文件夹,并更改到该文件夹。
md az204-cosmos cd az204-cosmos
创建 .NET 控制台应用。
dotnet new console
使用下面的命令在 Visual Studio Code 中打开当前文件夹。
-r
选项会打开文件夹,而不启动新的 Visual Studio Code 窗口。code . -r
选择“资源管理器”窗格中的“Program.cs”文件,在编辑器中打开该文件。
生成控制台应用
现在可以开始向项目添加包和代码。
添加包和 using 语句
在 Visual Studio Code 中打开终端,并使用以下命令将
Microsoft.Azure.Cosmos
包添加到项目。dotnet add package Microsoft.Azure.Cosmos
删除
Program.cs
文件中的所有现有代码并添加using Microsoft.Azure.Cosmos
语句。using Microsoft.Azure.Cosmos;
添加代码以连接到 Azure Cosmos DB 帐户
在
using
语句之后添加以下代码片段。 该代码片段将常数和变量添加到类中,并添加一些错误检查。 请确保按照代码注释中的说明替换EndpointUri
和PrimaryKey
的占位符值。public class Program { // Replace <documentEndpoint> with the information created earlier private static readonly string EndpointUri = "<documentEndpoint>"; // Set variable to the Primary Key from earlier. private static readonly string PrimaryKey = "<your primary key>"; // The Cosmos client instance private CosmosClient cosmosClient; // The database we will create private Database database; // The container we will create. private Container container; // The names of the database and container we will create private string databaseId = "az204Database"; private string containerId = "az204Container"; public static async Task Main(string[] args) { try { Console.WriteLine("Beginning operations...\n"); Program p = new Program(); await p.CosmosAsync(); } catch (CosmosException de) { Exception baseException = de.GetBaseException(); Console.WriteLine("{0} error occurred: {1}", de.StatusCode, de); } catch (Exception e) { Console.WriteLine("Error: {0}", e); } finally { Console.WriteLine("End of program, press any key to exit."); Console.ReadKey(); } } //The sample code below gets added below this line }
在
Main
方法下方,添加名为CosmosAsync
的新异步任务,该任务实例化新的CosmosClient
并添加代码以调用稍后将添加的用于创建数据库和容器的方法。public async Task CosmosAsync() { // Create a new instance of the Cosmos Client this.cosmosClient = new CosmosClient(EndpointUri, PrimaryKey); // Runs the CreateDatabaseAsync method await this.CreateDatabaseAsync(); // Run the CreateContainerAsync method await this.CreateContainerAsync(); }
创建数据库
将 CreateDatabaseAsync
方法复制粘贴到 CosmosAsync
方法后。 如果数据库尚不存在,CreateDatabaseAsync
会新建 ID 为 az204Database
的数据库。
private async Task CreateDatabaseAsync()
{
// Create a new database using the cosmosClient
this.database = await this.cosmosClient.CreateDatabaseIfNotExistsAsync(databaseId);
Console.WriteLine("Created Database: {0}\n", this.database.Id);
}
创建容器
将 CreateContainerAsync
方法复制并粘贴至 CreateDatabaseAsync
方法下。
private async Task CreateContainerAsync()
{
// Create a new container
this.container = await this.database.CreateContainerIfNotExistsAsync(containerId, "/LastName");
Console.WriteLine("Created Container: {0}\n", this.container.Id);
}
运行应用程序
保存工作,并在 Visual Studio Code 的终端中运行
dotnet build
命令以检查是否存在任何错误。 如果生成成功,请运行dotnet run
命令。 控制台显示以下消息。Beginning operations... Created Database: az204Database Created Container: az204Container End of program, press any key to exit.
验证结果:打开 Azure 门户,导航到 Azure Cosmos DB 资源,然后使用“数据资源管理器”查看数据库和容器。
清理 Azure 资源
现在可以通过运行以下命令,安全地从帐户中删除 az204-cosmos-rg 资源组。
az group delete --name az204-cosmos-rg --no-wait