练习:使用 Microsoft .NET SDK v3 创建资源

已完成

在本练习中,你要创建一个控制台应用,以在 Azure Cosmos DB 中执行以下操作:

  • 连接到 Azure Cosmos DB 帐户
  • 创建数据库
  • 创建容器

先决条件

设置

请执行以下操作,准备好 Azure 以及本地环境以进行练习。

连接到 Azure

  1. 开启 Visual Studio Code,从顶部应用程序栏选择“终端”并选择“新建终端”以打开终端窗口。

  2. 使用以下命令登录到 Azure。 应会打开一个浏览器窗口,用于选择要登录的帐户。

    az login
    

在 Azure 中创建资源

  1. 为此练习所需的资源创建资源组。 将 <myLocation> 替换为自己附近的区域。

    az group create --location <myLocation> --name az204-cosmos-rg
    
  2. 创建 Azure Cosmos DB 帐户。 将 <myCosmosDBacct> 替换为一个唯一名称以标识自己的 Azure Cosmos DB 帐户。 名称只能包含小写字母、数字和连字符 (-)。 它的长度必须介于 3 到 31 个字符之间。 此命令需要几分钟时间才能完成。

    az cosmosdb create --name <myCosmosDBacct> --resource-group az204-cosmos-rg
    

    记录 JSON 响应中显示的 documentEndpoint,稍后的练习中会用到它。

  3. 使用下面的命令检索帐户的主键。 记录命令结果中的 primaryMasterKey,代码中会用到它。

    # Retrieve the primary key
    az cosmosdb keys list --name <myCosmosDBacct> --resource-group az204-cosmos-rg
    

设置控制台应用程序

在将所需的资源部署到 Azure 后,下一步是使用 Visual Studio Code 中同一终端窗口设置控制台应用程序。

  1. 为该项目创建一个文件夹,并更改到该文件夹。

    md az204-cosmos
    cd az204-cosmos
    
  2. 创建 .NET 控制台应用。

    dotnet new console
    
  3. 使用下面的命令在 Visual Studio Code 中打开当前文件夹。 -r 选项会打开文件夹,而不启动新的 Visual Studio Code 窗口。

    code . -r
    
  4. 选择“资源管理器”窗格中的“Program.cs”文件,在编辑器中打开该文件。

生成控制台应用

现在可以开始向项目添加包和代码。

添加包和 using 语句

  1. 在 Visual Studio Code 中打开终端,并使用以下命令将 Microsoft.Azure.Cosmos 包添加到项目。

    dotnet add package Microsoft.Azure.Cosmos
    
  2. 删除 Program.cs 文件中的所有现有代码并添加 using Microsoft.Azure.Cosmos 语句。

    using Microsoft.Azure.Cosmos;
    

添加代码以连接到 Azure Cosmos DB 帐户

  1. using 语句之后添加以下代码片段。 该代码片段将常数和变量添加到类中,并添加一些错误检查。 请确保按照代码注释中的说明替换 EndpointUriPrimaryKey 的占位符值。

    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
    }
    
  2. 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);
}

运行应用程序

  1. 保存工作,并在 Visual Studio Code 的终端中运行 dotnet build 命令以检查是否存在任何错误。 如果生成成功,请运行 dotnet run 命令。 控制台显示以下消息。

    Beginning operations...
    
    Created Database: az204Database
    
    Created Container: az204Container
    
    End of program, press any key to exit.
    
  2. 验证结果:打开 Azure 门户,导航到 Azure Cosmos DB 资源,然后使用“数据资源管理器”查看数据库和容器。

清理 Azure 资源

现在可以通过运行以下命令,安全地从帐户中删除 az204-cosmos-rg 资源组。

az group delete --name az204-cosmos-rg --no-wait