Windows アプリから Cosmos DB データベースを使用する

この記事には、Windows アプリからの Cosmos DB データベースの操作を有効にするのに必要な手順が含まれています。 これには、コードでどのようにデータベースとやりとりできるかを示す小さなコード スニペットも含まれます。

ソリューションを設定する

この例を WPF、Windows フォーム、WinUI 3、UWP プロジェクトで使うと、Windows アプリを Cosmos DB データベースに接続できます。 次の手順に従って、パッケージをインストールし、いくつかの基本タスクのコード例を試してみましょう。

  1. パッケージ マネージャー コンソールを開きます ([表示] -> [その他のウィンドウ] -> [パッケージ マネージャー コンソール])。 コマンド Install-Package Microsoft.Azure.Cosmos を使用して、.NET 用 Azure Cosmos DB for NoSQL クライアント ライブラリの NuGet パッケージをインストールします。 これにより、プログラムを使用して Cosmos DB データベースにアクセスできるようになります。
  2. プロジェクトをビルドし、エラーなしでビルドが成功したことを確認します。

次に、Azure で Cosmos DB インスタンスを作成する必要があります。 これを行うには、「Azure Cosmos DB で NoSQL データベース アカウントを作成する」の手順に従います。

サンプル コードを使用して Cosmos DB を操作する

次のサンプル コードでは、Azure の Cosmos DB インスタンスからコンテナーを取得し、そのコンテナーに新しい項目を追加します。 次に、Cosmos DB の NoSQL クエリ API を使用してコンテナーから項目を取得し、応答の状態を出力します。 エンドポイント、認証キー、およびデータベース名は、前のセクションで作成した Cosmos DB インスタンスに基づいてカスタマイズする必要があることに注意してください。

注意

必要な Cosmos DB のセットアップと構成に関する情報を含む詳細な例については、「Azure Cosmos DB for NoSQL で .NET コンソール アプリケーションを開発する」を参照してください。

using Microsoft.Azure.Cosmos;

...

public async Task CosmosSample(string endpoint, string authKey)
{
    // CONNECT
    var client = new CosmosClient(
        accountEndpoint: endpoint,
        authKeyOrResourceToken: authKey
    );
    Database database = client.GetDatabase("sample_customers");
    ContainerProperties properties = new(
        id: "customers",
        partitionKeyPath: "/location"
    );
    Container container = await database.CreateContainerIfNotExistsAsync(properties);

    // WRITE DATA
    string customerId = "1234";
    string state = "WA";
    var customer = new
    {
        id = customerId,
        name = "John Doe",
        location = state
    };
    var createResponse = await container.CreateItemAsync(customer);
    Console.WriteLine($"[Status code: {createResponse.StatusCode}]\t{customerId}");

    // READ DATA
    string sql = "SELECT * FROM customers c WHERE c.id = @id";
    var query = new QueryDefinition(
        query: sql
    ).WithParameter("@id", customerId);
    using var feed = container.GetItemQueryIterator<dynamic>(queryDefinition: query);
    var queryResponse = await feed.ReadNextAsync();
    Console.WriteLine($"[Status code: {queryResponse.StatusCode}]\t{customerId}");
}