2016-12-30

Azure DocumentDB - Part 9 (使用 .NET SDK 查詢 DocumentDB)

認識了 DocumentDB SQL 語法,也看過如何使用 LINQ to DocumentDB SQL 來查詢 DocumentDB 上的資料,接著我們來了解在 .NET 專案中要怎樣才能執行 DocumentDB 查詢


安裝 Microsoft.Azure.DocumentDB SDK

1. 使用 NuGet GUI

  • 1.1 專案按右鍵 --> Manage NuGet Packages

    1nuget

  • 1.2 Browse --> 搜尋 Microsoft.Azure.DocumentDB --> 安裝

    2install

2. 使用 Package Manager Console

  • 2.1 Tools --> Manage NuGet Packages --> Package Manager Console

    3nugetconsole

  • 2.2 Package Manager Console
  • Default project 要選對
  • 執行 Install-Package Microsoft.Azure.DocumentDB

    4install

3. 檢查是否有相依套件需要更新

5update

取消專案預設使用 32-bit

1. 專案按右鍵 --> Properties

6properties

2. Build --> 取消勾選 Prefer 32-bit

7untrick

  • 未取消 Prefer 32-bit 錯誤訊息
    Partition routing information cannot be extracted from the query when running in a 32-bit process. To complete your query and avoid this exception, ensure that your host process is 64-bit.
    For Executable applications, this can be done by unchecking the "Prefer 32-bit" option in the project properties window, on the Build tab. 
    For VSTest based test projects, this can be done by selecting Test->Test Settings->Default Processor Architecture as X64, from Visual Studio Test menu option.
    For locally deployed ASP.NET Web applications, this can be done by checking the "Use the 64 bit version of IIS Express for web sites and projects", under Tools->Options->Projects and Solutions->Web Projects.
    

    12error

開始使用 .NET SDK

1. 引用 Namespace

using Microsoft.Azure.Documents.Client;

2. 準備基本資料

  • 2-1. DocumentDB endpointUrl private static readonly string endpointUrl = "endpointUrl";

    8endpointUrl

  • 2-2. authorizationKey private static readonly string authorizationKey = "authorizationKey";

    • 如果只需讀取資料,請記得使用 唯讀金鑰,保障安全性

      9key

3. 建立 DocumentClient

using (DocumentClient client = new DocumentClient(new Uri(endpointUrl), authorizationKey))
{
}

4. 定義取回最大取回數量

FeedOptions queryOptions = new FeedOptions { MaxItemCount = -1 };//'-1' 使用動態數量.

5. 建立 collection link

使用 databaseIdcollectionId 建立 collection 的連結

  • 5-1. databaseId

    10databaseid

  • 5-2. collectionId

    11collectionId

  • 5-3. 建立 collection link Uri collectionUri = UriFactory.CreateDocumentCollectionUri(databaseId, collectionId);

6. 建立 DocumentDB 的查詢

  • 使用 DocumentClientcollection linkFeedOptions 建立 IQueryable 物件
  • dynamic 可以改為 .NET 物件 var familyQuery = client.CreateDocumentQuery<dynamic>(collectionUri, queryOptions);

7. 執行查詢

var testResult= familyQuery.ToList();

13result

如果執行出現錯誤請檢查是否專案建置 未取消 Prefer 32-bit, 請參考上面的 取消專案預設使用 32-bit 相關設定

.NET 類別與 JSON 物件對應

  • .NET 物件屬性慣例使用大寫開頭,JOSN 則是小寫
  • 如果大小不同會被視為不同屬性,資料會被排除,需要特別留意屬性的對應
  • .NET 物件屬性對應 可用 [JsonProperty(PropertyName = "json_property_name")] 來指定對應名稱

測試專案原始碼

參考資料

  1. NoSQL 教學課程:建置 DocumentDB C# 主控台應用程式
  2. 測試專案原始碼

沒有留言:

張貼留言