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

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

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

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

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

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

それでは始めましょう。

前提条件

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

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

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

  1. 新しいウィンドウで、Azure Portal にサインインします。
  2. ジャンプバーで [新規][データベース][NoSQL (DocumentDB)] の順にクリックします。

    Screen shot of the Azure portal, highlighting More Services, and DocumentDB (NoSQL)

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

    新しい [DocumentDB] ブレードのスクリーンショット

    • [ID] ボックスに、DocumentDB アカウントを識別する名前を入力します。 ID が検証されると、緑色のチェック マークが [ID] ボックスに表示されます。 この ID の値は、URI 内のホスト名になります。 ID に含めることができるのは英小文字、数字、および "-" のみで、文字数は 3 ~ 50 文字にする必要があります。 選択したエンドポイント名に documents.azure.com が追加され、これが DocumentDB アカウント エンドポイントになります。
    • [NoSQL API] ボックスで、[DocumentDB] を選択します。
    • [サブスクリプション]で、DocumentDB アカウントに使用する Azure サブスクリプションを選択します。 アカウントにサブスクリプションが 1 つしかない場合は、そのアカウントが既定で選択されます。
    • [リソース グループ]で、DocumentDB アカウントのリソース グループを選択または作成します。 既定では、新しいリソース グループが作成されます。 詳細については、 Azure Portal を使用した Azure リソースの管理に関する記事をご覧ください。
    • [場所] を使用して、DocumentDB アカウントをホストする地理的な場所を指定します。
  4. 新しい DocumentDB アカウントのオプションを構成したら、 [作成]をクリックします。 デプロイの状態を通知ハブで確認します。

    データベースの迅速な作成 - DocumentDB アカウントを作成中であることを示す通知ハブのスクリーンショット

    DocumentDB アカウントが正常に作成され、リソース グループにデプロイされたことを示す通知ハブのスクリーンショット - オンライン データベース クリエーターの通知

  5. DocumentDB アカウントが作成されたら、既定の設定で使用できる状態になります。 既定の設定を確認するには、ジャンプバーの [NoSQL (DocumentDB)] アイコンをクリックし、新しいアカウントをクリックして、リソース メニューの [既定の整合性] をクリックします。

    Azure Portal で Azure DocumentDB データベース アカウントを開く方法を示すスクリーン ショット

    DocumentDB アカウントの既定の整合性は [セッション]に設定されます。 既定の整合性を調整するには、使用可能なその他の整合性オプションのいずれかを選択します。 DocumentDB によって提供される整合性レベルの詳細については、「 DocumentDB の整合性レベル」をご覧ください。

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

  1. コンピューターで Visual Studio 2015 を開きます。
  2. [ファイル] メニューで、[新規][プロジェクト] の順に選択します。
  3. [新しいプロジェクト] ダイアログで、[テンプレート] / [Visual C#] / [コンソール アプリケーション] の順に選択し、プロジェクトの名前を指定して、[OK] をクリックします。 [新しいプロジェクト] ウィンドウのスクリーン ショット
  4. ソリューション エクスプローラーで、Visual Studio ソリューションの下にある新しいコンソール アプリケーションを右クリックし、[NuGet パッケージの管理] をクリックします。

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

  5. [Nuget] タブの [参照] をクリックし、検索ボックスに「azure documentdb」と入力します。
  6. 結果で Microsoft Azure DocumentDB を探し、[インストール] をクリックします。 DocumentDB クライアント ライブラリのパッケージ ID は Microsoft.Azure.DocumentDB です。 DocumentDB クライアント SDK を見つける NuGet メニューのスクリーン ショット

    ソリューションの変更の確認に関するメッセージが表示されたら、[OK] をクリックします。 ライセンスの同意に関するメッセージが表示されたら、[同意する] をクリックします。

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

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

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

using System;
using System.Linq;
using System.Threading.Tasks;

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

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

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

public 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 Portal に戻り、URI とプライマリ キーを取得します。 DocumentDB URI とプライマリ キーは、アプリケーションが接続先を認識し、DocumentDB がアプリケーションの接続を信頼するために必要です。

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

ポータルから URI をコピーし、program.cs ファイルの <your endpoint URI> に貼り付けます。 次に、ポータルからプライマリ キーをコピーし、 <your key>に貼り付けます。

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();
        }

F5 キーを押してアプリケーションを実行します。 コンソール ウィンドウの出力には、接続が確立されたことを示す、End of demo, press any key to exit. というメッセージが表示されます。 表示されたら、コンソール ウィンドウを閉じます。

お疲れさまでした。 これで、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 ドキュメント ストレージの論理上のコンテナーです。

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

// ADD THIS PART TO YOUR CODE
private async Task CreateDatabaseIfNotExists(string databaseName)
{
        // Check to verify a database with the id=FamilyDB does not exist
        try
        {
                await this.client.ReadDatabaseAsync(UriFactory.CreateDatabaseUri(databaseName));
                this.WriteToConsoleAndPromptToContinue("Found {0}", databaseName);
        }
        catch (DocumentClientException de)
        {
                // If the database does not exist, create a new database
                if (de.StatusCode == HttpStatusCode.NotFound)
                {
                        await this.client.CreateDatabaseAsync(new Database { Id = databaseName });
                        this.WriteToConsoleAndPromptToContinue("Created {0}", databaseName);
                }
                else
                {
                        throw;
                }
        }
}

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

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

    // ADD THIS PART TO YOUR CODE
    await this.CreateDatabaseIfNotExists("FamilyDB_oa");

F5 キーを押してアプリケーションを実行します。

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

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

警告

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

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

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

// ADD THIS PART TO YOUR CODE
private async Task CreateDocumentCollectionIfNotExists(string databaseName, string collectionName)
{
    try
    {
        await this.client.ReadDocumentCollectionAsync(UriFactory.CreateDocumentCollectionUri(databaseName, collectionName));
        this.WriteToConsoleAndPromptToContinue("Found {0}", collectionName);
    }
    catch (DocumentClientException de)
    {
        // If the document collection does not exist, create a new collection
        if (de.StatusCode == HttpStatusCode.NotFound)
        {
            DocumentCollection collectionInfo = new DocumentCollection();
            collectionInfo.Id = collectionName;

            // Configure collections for maximum query flexibility including string range queries.
            collectionInfo.IndexingPolicy = new IndexingPolicy(new RangeIndex(DataType.String) { Precision = -1 });

            // Here we create a collection with 400 RU/s.
            await this.client.CreateDocumentCollectionAsync(
                UriFactory.CreateDatabaseUri(databaseName),
                collectionInfo,
                new RequestOptions { OfferThroughput = 400 });

            this.WriteToConsoleAndPromptToContinue("Created {0}", collectionName);
        }
        else
        {
            throw;
        }
    }
}

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

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

    await this.CreateDatabaseIfNotExists("FamilyDB_oa");

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

F5 キーを押してアプリケーションを実行します。

おめでとうございます。 これで、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 のドキュメントです。

次のコードをコピーし、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);

F5 キーを押してアプリケーションを実行します。

おめでとうございます。 これで、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");

アプリケーションを実行する前に、[プロジェクト] メニューの [<プロジェクト名> のプロパティ] をクリックし、[ビルド] をクリックします。 [32 ビットを優先] チェック ボックスをオフにします。32 ビット プロセスで実行していると、クエリからパーティション ルーティング情報を抽出できないためです。

F5 キーを押してアプリケーションを実行します。

おめでとうございます。 これで、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");

F5 キーを押してアプリケーションを実行します。

おめでとうございます。 これで、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");

F5 キーを押してアプリケーションを実行します。

おめでとうございます。 これで、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"));

F5 キーを押してアプリケーションを実行します。

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

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

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

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

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 チュートリアル ソリューションを入手する

このチュートリアルの手順を実行する時間がない場合や、コード サンプルをダウンロードするだけの場合は、Github から入手できます。

GetStarted ソリューションをビルドするには、以下のものが必要です。

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

アプリケーションを実行する前に、[プロジェクト] メニューの [<プロジェクト名> のプロパティ] をクリックし、[ビルド] をクリックします。 [32 ビットを優先] チェック ボックスをオフにします。

以上です。ビルドすれば完了です。

次のステップ