NoSQL チュートリアル: .NET Core での DocumentDB C# コンソール アプリケーションの作成

Azure DocumentDB .NET Core SDK の NoSQL チュートリアルへようこそ。 このチュートリアルに従うことで、DocumentDB リソースを作成し、クエリするコンソール アプリケーションを準備することができます。

ここで説明する操作は以下のとおりです。

  • DocumentDB アカウントを作成して接続する
  • Visual Studio ソリューションを構成する
  • オンライン データベースを作成する
  • コレクションを作成する
  • JSON ドキュメントを作成する
  • コレクションをクエリする
  • ドキュメントを置換する
  • ドキュメントを削除する
  • データベースを削除する

時間がなくても 心配はありません。 GitHub で完全なソリューションを入手できます。 簡単な手順については「完全なソリューションの取得」を参照してください。

DocumentDB .NET Core SDK を使用して Xamarin iOS、Android、またはフォーム アプリケーションを作成する場合は、 DocumentDB を使用した Xamarin モバイル アプリケーションの開発に関する記事を参照してください。

その後で、このページの上部または下部にある投票ボタンを使用して、フィードバックをお寄せください。 マイクロソフトから直接ご連絡を差し上げて問題がなければ、コメント欄に電子メール アドレスをご記入ください。

メモ

このチュートリアルで使用する DocumentDB .NET Core SDK は、現在のところ、ユニバーサル Windows プラットフォーム (UWP) アプリとの互換性はありません。 UWP アプリをサポートするプレビュー バージョンの .NET Core SDK については、askdocdb@microsoft.com に電子メールでお問い合わせください。

それでは始めましょう。

前提条件

以下のものがそろっていることを確認してください。

  • アクティブな Azure アカウント。 お持ちでない場合は、 無料アカウントにサインアップしてください。
  • Visual Studio 2017
    • MacOS または Linux で作業している場合、選択したプラットフォーム用の .NET Core SDK をインストールすることで、コマンド ラインから .NET Core アプリを開発できます。
    • Windows で作業している場合、.NET Core SDK をインストールすることで、コマンド ラインから .NET Core アプリを開発できます。
    • 独自のエディターを使用するか、Visual Studio Code をダウンロードできます。Visual Studio Code は無料で、Windows、Linux、MacOS で動作します。

手順 1: DocumentDB アカウントを作成する

DocumentDB アカウントを作成しましょう。 使用するアカウントが既にある場合は、「 Visual Studio ソリューションをセットアップする」に進んでかまいません。 DocumentDB Emulator を使用する場合は、Azure DocumentDB Emulator に関する記事に記載されている手順に従って、エミュレーターをセットアップし、「Visual Studio ソリューションをセットアップする」に進んでください。

  1. 新しいウィンドウで、Azure Portal にサインインします。
  2. 左側のメニューで、[新規][データベース][Azure Cosmos DB] の順にクリックします。

    その他のサービスと Azure Cosmos DB が強調表示された Azure Portal のスクリーンショット

  3. [新しいアカウント] ブレードで、Azure Cosmos DB アカウントに必要な構成を指定します。

    Azure Cosmos DB では、Gremlin (グラフ)、MongoDB、SQL (DocumentDB)、および Table (キー値) の 4 つのプログラミング モデルのいずれかを選択できます。

    このクイック スタートでは、DocumentDB API に対してプログラミングするため、フォームに入力するときに SQL (DocumentDB) を選択します。 ただし、ソーシャル メディア アプリ用のグラフ データ、キー/値 (テーブル) データ、または MongoDB アプリから移行されたデータがある場合は、Azure Cosmos DB が、ミッション クリティカルなすべてのアプリケーションのための可用性の高い、世界中に分散したデータベース サービス プラットフォームを提供できることを認識してください。

    ガイドとしてスクリーンショットの情報を使用して、新しいアカウント ブレードに記入します。 自分のアカウントを設定したときに一意の値を選択するので、値はスクリーンショットには正確には一致しません。

    新しい Azure Cosmos DB ブレードのスクリーン ショット

    設定 推奨値 説明
    ID 一意の値 Azure Cosmos DB アカウントを識別するために選択する一意の名前。 指定した ID に documents.azure.com が付加されて URI が作成されるので、ID は一意であっても識別可能なものを使用してください。 ID には小文字、数字、'-' 文字のみを含めることができ、文字数は 3 ~ 50 文字にする必要があります。
    API SQL (DocumentDB) この記事の後半で、DocumentDB API に対してプログラミングします。
    サブスクリプション 該当するサブスクリプション Azure Cosmos DB アカウントに使用する Azure サブスクリプション。
    リソース グループ ID と同じ値 自分のアカウントの新しいリソース グループの名前。 簡略化のため、ID と同じ名前を使用することができます。
    場所 ユーザーに最も近いリージョン Azure Cosmos DB アカウントをホストする地理的な場所です。 データに最も高速にアクセスできる、ユーザーに最も近い場所を選択します。
  4. [作成] をクリックしてアカウントを作成します。
  5. 上部のツール バーの [通知] をクリックして、デプロイ プロセスを監視します。

    デプロイが開始したという通知

  6. デプロイが完了したら、All Resources タイルから、新しいアカウントを開きます。

    [All Resources] (すべてのリソース) タイルの DocumentDB アカウント

手順 2: Visual Studio ソリューションをセットアップする

  1. コンピューターで Visual Studio 2017 を開きます。
  2. [ファイル] メニューで、[新規][プロジェクト] の順に選択します。
  3. [新しいプロジェクト] ダイアログで、[テンプレート] / [Visual C#] / [.NET Core]/[Console Application (.NET Core) (コンソール アプリケーション (.NET Core))] の順に選択します。プロジェクトに DocumentDBGettingStarted という名前を付け、[OK] をクリックします。

    [新しいプロジェクト] ウィンドウのスクリーン ショット

  4. ソリューション エクスプローラーで、[DocumentDBGettingStarted] を右クリックします。
  5. メニューの [NuGet パッケージの管理] をクリックします。

    プロジェクトの右クリック メニューのスクリーン ショット

  6. [NuGet] タブで、ウィンドウの上部にある [参照] をクリックし、検索ボックスに「azure documentdb」と入力します。
  7. 結果で Microsoft.Azure.DocumentDB.Core を探し、[インストール] をクリックします。 .NET Core 用の DocumentDB クライアント ライブラリのパッケージ ID は Microsoft.Azure.DocumentDB.Core です。 この .NET Core NuGet パッケージでサポートされていない .NET Framework バージョン (net461 など) を対象とする場合は、.NET Framework 4.5 以降のすべての .NET Framework バージョンをサポートする Microsoft.Azure.DocumentDB を使用します。
  8. プロンプトが表示されたら、NuGet パッケージのインストールと使用許諾契約に同意します。

そこで、 これでセットアップは終了です。 いくつかのコードの記述を開始しましょう。 このチュートリアルの完成したコード プロジェクトは GitHubにあります。

手順 3: DocumentDB アカウントに接続する

まず、Program.cs ファイルで、C# アプリケーションの先頭に以下の参照を追加します。

using System;

// ADD THIS PART TO YOUR CODE
using System.Linq;
using System.Threading.Tasks;
using System.Net;
using Microsoft.Azure.Documents;
using Microsoft.Azure.Documents.Client;
using Newtonsoft.Json;
重要

この NoSQL チュートリアルを完成させるには、上記の依存関係を追加します。

次に、これら 2 つの定数と client 変数をパブリック クラス Program の下に追加します。

class Program
{
    // ADD THIS PART TO YOUR CODE
    private const string EndpointUri = "<your endpoint URI>";
    private const string PrimaryKey = "<your key>";
    private DocumentClient client;

次に、 Azure ポータル を開き、URI とプライマリ キーを取得します。 DocumentDB URI とプライマリ キーは、アプリケーションが接続先を認識し、DocumentDB がアプリケーションの接続を信頼するために必要です。

Azure Portal で DocumentDB アカウントに移動し、 [キー]をクリックします。

ポータルから URI をコピーし、program.cs ファイルの <your endpoint URI> に貼り付けます。 次に、ポータルからプライマリ キーをコピーし、 <your key>に貼り付けます。 Azure DocumentDB Emulator を使用している場合は、エンドポイントとして https://localhost:8081 を使用し、DocumentDB Emulator を使用した開発方法に関する記事に記載されているとおりに適切に定義された承認キーを使用します。 エンドポイントとキーを指定する際は、< と > を削除したうえで二重引用符で囲みます。

C# コンソール アプリケーションを作成するために NoSQL チュートリアルで使用される Azure ポータルのスクリーン ショット。 アクティブなハブが強調表示され、[DocumentDB アカウント] ブレードで [キー] ボタンが強調表示され、[キー] ブレードで URI 値、プライマリ キー値、およびセカンダリ キーの値が強調表示されている DocumentDB アカウントを示します

DocumentClientの新しいインスタンスを作成して、作業の開始アプリケーションを起動します。

Main メソッドの下に、GetStartedDemo という新しい非同期タスクを追加します。これによって新しい DocumentClient はインスタンス化されます。

static void Main(string[] args)
{
}

// ADD THIS PART TO YOUR CODE
private async Task GetStartedDemo()
{
    this.client = new DocumentClient(new Uri(EndpointUri), PrimaryKey);
}

次のコードを追加して、 Main メソッドから非同期タスクを実行します。 Main メソッドは例外をキャッチし、コンソールに書き込みます。

static void Main(string[] args)
{
        // ADD THIS PART TO YOUR CODE
        try
        {
                Program p = new Program();
                p.GetStartedDemo().Wait();
        }
        catch (DocumentClientException de)
        {
                Exception baseException = de.GetBaseException();
                Console.WriteLine("{0} error occurred: {1}, Message: {2}", de.StatusCode, de.Message, baseException.Message);
        }
        catch (Exception e)
        {
                Exception baseException = e.GetBaseException();
                Console.WriteLine("Error: {0}, Message: {1}", e.Message, baseException.Message);
        }
        finally
        {
                Console.WriteLine("End of demo, press any key to exit.");
                Console.ReadKey();
        }

[DocumentDBGettingStarted] を押して、アプリケーションをビルドして実行します。

ご利用ありがとうございます。 これで、DocumentDB アカウントに接続できました。続いては、DocumentDB リソースの使用方法について説明します。

手順 4: データベースを作成する

データベースを作成するコードを追加する前に、コンソールに書き込むためのヘルパー メソッドを追加します。

WriteToConsoleAndPromptToContinue メソッドをコピーして、GetStartedDemo メソッドの下に貼り付けます。

// ADD THIS PART TO YOUR CODE
private void WriteToConsoleAndPromptToContinue(string format, params object[] args)
{
        Console.WriteLine(format, args);
        Console.WriteLine("Press any key to continue ...");
        Console.ReadKey();
}

DocumentDB データベースはDocumentClient クラスの CreateDatabaseAsync メソッドを使用して作成できます。 データベースは、コレクションに分割された JSON ドキュメント ストレージの論理上のコンテナーです。

次のコードをコピーし、GetStartedDemo メソッドに貼り付けます。クライアントを作成する処理のすぐ下に追加してください。 これで FamilyDB というデータベースが作成されます。

private async Task GetStartedDemo()
{
    this.client = new DocumentClient(new Uri(EndpointUri), PrimaryKey);

    // ADD THIS PART TO YOUR CODE
    await this.client.CreateDatabaseIfNotExistsAsync(new Database { Id = "FamilyDB_oa" });

[DocumentDBGettingStarted] を押して、アプリケーションを実行します。

ご利用ありがとうございます。 これで、DocumentDB データベースが作成されました。

手順 5: コレクションを作成する

警告

CreateDocumentCollectionAsync は、予約済みのスループットで新しいコレクションを作成します。これによって価格に影響があります。 詳細については、価格のページを参照してください。

コレクションは、DocumentClient クラスの CreateDocumentCollectionAsync メソッドを使用して作成できます。 コレクションには、JSON ドキュメントのほか、関連する JavaScript アプリケーション ロジックが格納されます。

次のコードをコピーし、GetStartedDemo メソッドに貼り付けます。データベースを作成する処理のすぐ下に追加してください。 これで、FamilyCollection_oa というドキュメント コレクションが作成されます。

    this.client = new DocumentClient(new Uri(EndpointUri), PrimaryKey);

    await this.CreateDatabaseIfNotExists("FamilyDB_oa");

    // ADD THIS PART TO YOUR CODE
    await this.client.CreateDocumentCollectionIfNotExistsAsync(UriFactory.CreateDatabaseUri("FamilyDB_oa"), new DocumentCollection { Id = "FamilyCollection_oa" });

[DocumentDBGettingStarted] を押して、アプリケーションを実行します。

ご利用ありがとうございます。 これで、DocumentDB ドキュメント コレクションが作成されました。

手順 6: JSON ドキュメントを作成する

ドキュメントは、DocumentClient クラスの CreateDocumentAsync メソッドを使用して作成できます。 ドキュメントは、ユーザー定義の (ユーザーが自由に定義できる) JSON コンテンツです。 ここで 1 つ以上のドキュメントを挿入できます。 データベースに保存するデータが既にある場合には、DocumentDB の データ移行ツールを使用できます。

まず、この例の DocumentDB 内に格納するオブジェクトの Family クラスを作成する必要があります。 さらに、Family 内で使用するサブクラスとして、ParentChildPetAddress を作成します。 ドキュメントには、JSON で id としてシリアル化される Id プロパティが必要であることに注意してください。 GetStartedDemo の後に次の内部サブクラスを追加することで、これらのクラスを作成します。

FamilyParentChildPetAddress の各クラスをコピーし、WriteToConsoleAndPromptToContinue メソッドの下に貼り付けます。

private void WriteToConsoleAndPromptToContinue(string format, params object[] args)
{
    Console.WriteLine(format, args);
    Console.WriteLine("Press any key to continue ...");
    Console.ReadKey();
}

// ADD THIS PART TO YOUR CODE
public class Family
{
    [JsonProperty(PropertyName = "id")]
    public string Id { get; set; }
    public string LastName { get; set; }
    public Parent[] Parents { get; set; }
    public Child[] Children { get; set; }
    public Address Address { get; set; }
    public bool IsRegistered { get; set; }
    public override string ToString()
    {
            return JsonConvert.SerializeObject(this);
    }
}

public class Parent
{
    public string FamilyName { get; set; }
    public string FirstName { get; set; }
}

public class Child
{
    public string FamilyName { get; set; }
    public string FirstName { get; set; }
    public string Gender { get; set; }
    public int Grade { get; set; }
    public Pet[] Pets { get; set; }
}

public class Pet
{
    public string GivenName { get; set; }
}

public class Address
{
    public string State { get; set; }
    public string County { get; set; }
    public string City { get; set; }
}

CreateFamilyDocumentIfNotExists メソッドをコピーし、CreateDocumentCollectionIfNotExists メソッドの下に貼り付けます。

// ADD THIS PART TO YOUR CODE
private async Task CreateFamilyDocumentIfNotExists(string databaseName, string collectionName, Family family)
{
    try
    {
        await this.client.ReadDocumentAsync(UriFactory.CreateDocumentUri(databaseName, collectionName, family.Id));
        this.WriteToConsoleAndPromptToContinue("Found {0}", family.Id);
    }
    catch (DocumentClientException de)
    {
        if (de.StatusCode == HttpStatusCode.NotFound)
        {
            await this.client.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri(databaseName, collectionName), family);
            this.WriteToConsoleAndPromptToContinue("Created Family {0}", family.Id);
        }
        else
        {
            throw;
        }
    }
}

さらに、2 つのドキュメントを挿入します。1 つは Andersen Family のドキュメント、もう 1 つは Wakefield Family のドキュメントです。

// ADD THIS PART TO YOUR CODE に続くコードをコピーし、GetStartedDemo メソッドのドキュメント コレクションの作成処理の下に貼り付けます。

await this.CreateDatabaseIfNotExists("FamilyDB_oa");

await this.CreateDocumentCollectionIfNotExists("FamilyDB_oa", "FamilyCollection_oa");

// ADD THIS PART TO YOUR CODE
Family andersenFamily = new Family
{
        Id = "Andersen.1",
        LastName = "Andersen",
        Parents = new Parent[]
        {
                new Parent { FirstName = "Thomas" },
                new Parent { FirstName = "Mary Kay" }
        },
        Children = new Child[]
        {
                new Child
                {
                        FirstName = "Henriette Thaulow",
                        Gender = "female",
                        Grade = 5,
                        Pets = new Pet[]
                        {
                                new Pet { GivenName = "Fluffy" }
                        }
                }
        },
        Address = new Address { State = "WA", County = "King", City = "Seattle" },
        IsRegistered = true
};

await this.CreateFamilyDocumentIfNotExists("FamilyDB_oa", "FamilyCollection_oa", andersenFamily);

Family wakefieldFamily = new Family
{
        Id = "Wakefield.7",
        LastName = "Wakefield",
        Parents = new Parent[]
        {
                new Parent { FamilyName = "Wakefield", FirstName = "Robin" },
                new Parent { FamilyName = "Miller", FirstName = "Ben" }
        },
        Children = new Child[]
        {
                new Child
                {
                        FamilyName = "Merriam",
                        FirstName = "Jesse",
                        Gender = "female",
                        Grade = 8,
                        Pets = new Pet[]
                        {
                                new Pet { GivenName = "Goofy" },
                                new Pet { GivenName = "Shadow" }
                        }
                },
                new Child
                {
                        FamilyName = "Miller",
                        FirstName = "Lisa",
                        Gender = "female",
                        Grade = 1
                }
        },
        Address = new Address { State = "NY", County = "Manhattan", City = "NY" },
        IsRegistered = false
};

await this.CreateFamilyDocumentIfNotExists("FamilyDB_oa", "FamilyCollection_oa", wakefieldFamily);

[DocumentDBGettingStarted] を押して、アプリケーションを実行します。

ご利用ありがとうございます。 これで、2 つの DocumentDB ドキュメントが作成されました。

C# コンソール アプリケーションを作成するために NoSQL チュートリアルで使用されるアカウント、オンライン データベース、コレクション、およびドキュメントの間の階層関係を示す図

手順 7: DocumentDB リソースをクエリする

DocumentDB では、各コレクションに格納された JSON ドキュメントに対するリッチ クエリをサポートしています。 次のサンプル コードは、前の手順で挿入したドキュメントに対して実行できる、さまざまなクエリを示しています。DocumentDB SQL 構文と LINQ の両方が使用されています。

ExecuteSimpleQuery メソッドをコピーし、CreateFamilyDocumentIfNotExists メソッドの下に貼り付けます。

// ADD THIS PART TO YOUR CODE
private void ExecuteSimpleQuery(string databaseName, string collectionName)
{
    // Set some common query options
    FeedOptions queryOptions = new FeedOptions { MaxItemCount = -1 };

        // Here we find the Andersen family via its LastName
        IQueryable<Family> familyQuery = this.client.CreateDocumentQuery<Family>(
                UriFactory.CreateDocumentCollectionUri(databaseName, collectionName), queryOptions)
                .Where(f => f.LastName == "Andersen");

        // The query is executed synchronously here, but can also be executed asynchronously via the IDocumentQuery<T> interface
        Console.WriteLine("Running LINQ query...");
        foreach (Family family in familyQuery)
        {
            Console.WriteLine("\tRead {0}", family);
        }

        // Now execute the same query via direct SQL
        IQueryable<Family> familyQueryInSql = this.client.CreateDocumentQuery<Family>(
                UriFactory.CreateDocumentCollectionUri(databaseName, collectionName),
                "SELECT * FROM Family WHERE Family.LastName = 'Andersen'",
                queryOptions);

        Console.WriteLine("Running direct SQL query...");
        foreach (Family family in familyQueryInSql)
        {
                Console.WriteLine("\tRead {0}", family);
        }

        Console.WriteLine("Press any key to continue ...");
        Console.ReadKey();
}

次のコードをコピーし、GetStartedDemo メソッドに貼り付けます。2 つ目のドキュメント作成処理のすぐ下に追加してください。

await this.CreateFamilyDocumentIfNotExists("FamilyDB_oa", "FamilyCollection_oa", wakefieldFamily);

// ADD THIS PART TO YOUR CODE
this.ExecuteSimpleQuery("FamilyDB_oa", "FamilyCollection_oa");

[DocumentDBGettingStarted] を押して、アプリケーションを実行します。

ご利用ありがとうございます。 これで、DocumentDB コレクションに対するクエリが実行されました。

次の図では、作成したコレクションに対して DocumentDB SQL クエリ構文がどのように呼び出されるか、および同じロジックが LINQ クエリにも適用されることを示します。

C# コンソール アプリケーションを作成するために NoSQL チュートリアルで使用されるクエリの範囲と意味を示す図

DocumentDB クエリのスコープは既に 1 つのコレクションに設定されているので、クエリでは FROM キーワードを省略できます。 したがって、"FROM Families f" は "FROM root r" または他の任意の変数名に置き換えることができます。 DocumentDB は、Families、root、または任意の変数名が、既定で現在のコレクションを参照しているものと推測します。

手順 8: JSON ドキュメントを置換する

DocumentDB は、JSON ドキュメントの置換をサポートします。

ReplaceFamilyDocument メソッドをコピーし、ExecuteSimpleQuery メソッドの下に貼り付けます。

// ADD THIS PART TO YOUR CODE
private async Task ReplaceFamilyDocument(string databaseName, string collectionName, string familyName, Family updatedFamily)
{
    try
    {
        await this.client.ReplaceDocumentAsync(UriFactory.CreateDocumentUri(databaseName, collectionName, familyName), updatedFamily);
        this.WriteToConsoleAndPromptToContinue("Replaced Family {0}", familyName);
    }
    catch (DocumentClientException de)
    {
        throw;
    }
}

次のコードをコピーし、GetStartedDemo メソッドに貼り付けます。クエリを実行する処理のすぐ下に追加してください。 ドキュメントを置換した後に、同じクエリが実行され、変更されたドキュメントが表示されます。

await this.CreateFamilyDocumentIfNotExists("FamilyDB_oa", "FamilyCollection_oa", wakefieldFamily);

this.ExecuteSimpleQuery("FamilyDB_oa", "FamilyCollection_oa");

// ADD THIS PART TO YOUR CODE
// Update the Grade of the Andersen Family child
andersenFamily.Children[0].Grade = 6;

await this.ReplaceFamilyDocument("FamilyDB_oa", "FamilyCollection_oa", "Andersen.1", andersenFamily);

this.ExecuteSimpleQuery("FamilyDB_oa", "FamilyCollection_oa");

[DocumentDBGettingStarted] を押して、アプリケーションを実行します。

ご利用ありがとうございます。 これで、DocumentDB ドキュメントが置換されました。

手順 9: JSON ドキュメントを削除する

DocumentDB は、JSON ドキュメントの削除をサポートしています。

DeleteFamilyDocument メソッドをコピーし、ReplaceFamilyDocument メソッドの下に貼り付けます。

// ADD THIS PART TO YOUR CODE
private async Task DeleteFamilyDocument(string databaseName, string collectionName, string documentName)
{
    try
    {
        await this.client.DeleteDocumentAsync(UriFactory.CreateDocumentUri(databaseName, collectionName, documentName));
        Console.WriteLine("Deleted Family {0}", documentName);
    }
    catch (DocumentClientException de)
    {
        throw;
    }
}

次のコードをコピーし、GetStartedDemo メソッドに貼り付けます。2 回目のクエリ実行のすぐ下に追加してください。

await this.ReplaceFamilyDocument("FamilyDB_oa", "FamilyCollection_oa", "Andersen.1", andersenFamily);

this.ExecuteSimpleQuery("FamilyDB_oa", "FamilyCollection_oa");

// ADD THIS PART TO CODE
await this.DeleteFamilyDocument("FamilyDB_oa", "FamilyCollection_oa", "Andersen.1");

[DocumentDBGettingStarted] を押して、アプリケーションを実行します。

ご利用ありがとうございます。 これで、DocumentDB ドキュメントが削除されました。

手順 10: データベースを削除する

作成したデータベースを削除すると、データベースとすべての子リソース (コレクション、ドキュメントなど) が削除されます。

データベース全体とすべての子リソースを削除するために、次のコードをコピーし、GetStartedDemo メソッドに貼り付けます。ドキュメントの削除処理のすぐ下に追加してください。

this.ExecuteSimpleQuery("FamilyDB_oa", "FamilyCollection_oa");

await this.DeleteFamilyDocument("FamilyDB_oa", "FamilyCollection_oa", "Andersen.1");

// ADD THIS PART TO CODE
// Clean up/delete the database
await this.client.DeleteDatabaseAsync(UriFactory.CreateDatabaseUri("FamilyDB_oa"));

[DocumentDBGettingStarted] を押して、アプリケーションを実行します。

ご利用ありがとうございます。 これで、DocumentDB データベースが作成されました。

手順 11: C# コンソール アプリケーションの全体的な実行の流れ

Visual Studio で [DocumentDBGettingStarted] を押して、アプリケーションをデバッグ モードでビルドします。

開始したアプリケーションの出力が表示されます。 出力では追加したクエリの結果が表示されます。次の例のようなものになるはずです。

Created FamilyDB_oa
Press any key to continue ...
Created FamilyCollection_oa
Press any key to continue ...
Created Family Andersen.1
Press any key to continue ...
Created Family Wakefield.7
Press any key to continue ...
Running LINQ query...
    Read {"id":"Andersen.1","LastName":"Andersen","District":"WA5","Parents":[{"FamilyName":null,"FirstName":"Thomas"},{"FamilyName":null,"FirstName":"Mary Kay"}],"Children":[{"FamilyName":null,"FirstName":"Henriette Thaulow","Gender":"female","Grade":5,"Pets":[{"GivenName":"Fluffy"}]}],"Address":{"State":"WA","County":"King","City":"Seattle"},"IsRegistered":true}
Running direct SQL query...
    Read {"id":"Andersen.1","LastName":"Andersen","District":"WA5","Parents":[{"FamilyName":null,"FirstName":"Thomas"},{"FamilyName":null,"FirstName":"Mary Kay"}],"Children":[{"FamilyName":null,"FirstName":"Henriette Thaulow","Gender":"female","Grade":5,"Pets":[{"GivenName":"Fluffy"}]}],"Address":{"State":"WA","County":"King","City":"Seattle"},"IsRegistered":true}
Replaced Family Andersen.1
Press any key to continue ...
Running LINQ query...
    Read {"id":"Andersen.1","LastName":"Andersen","District":"WA5","Parents":[{"FamilyName":null,"FirstName":"Thomas"},{"FamilyName":null,"FirstName":"Mary Kay"}],"Children":[{"FamilyName":null,"FirstName":"Henriette Thaulow","Gender":"female","Grade":6,"Pets":[{"GivenName":"Fluffy"}]}],"Address":{"State":"WA","County":"King","City":"Seattle"},"IsRegistered":true}
Running direct SQL query...
    Read {"id":"Andersen.1","LastName":"Andersen","District":"WA5","Parents":[{"FamilyName":null,"FirstName":"Thomas"},{"FamilyName":null,"FirstName":"Mary Kay"}],"Children":[{"FamilyName":null,"FirstName":"Henriette Thaulow","Gender":"female","Grade":6,"Pets":[{"GivenName":"Fluffy"}]}],"Address":{"State":"WA","County":"King","City":"Seattle"},"IsRegistered":true}
Deleted Family Andersen.1
End of demo, press any key to exit.

ご利用ありがとうございます。 この NoSQL チュートリアルを完了し、実用的な C# コンソール アプリケーションを入手しました。

完全な NoSQL チュートリアル ソリューションを入手する

この記事のすべてのサンプルを含む GetStarted ソリューションをビルドするには、以下が必要です。

Visual Studio で DocumentDB .NET Core SDK への参照を復元するには、ソリューション エクスプローラーで GetStarted ソリューションを右クリックし、[Enable NuGet Package Restore (NuGet パッケージの復元を有効にする)] をクリックします。 次に、「DocumentDB アカウントに接続する」の説明に従って、Program.cs ファイルの EndpointUrl と AuthorizationKey の値を更新します。

次のステップ