DocumentDB-데이터베이스 나열

지금까지 DocumentDB 계정에 두 개의 데이터베이스를 만들었습니다. 첫 번째 데이터베이스는 Azure Portal을 사용하여 만들고 두 번째 데이터베이스는 .Net SDK를 사용하여 만듭니다. 이제 이러한 데이터베이스를 보려면 Azure Portal을 사용할 수 있습니다.

Azure Portal에서 DocumentDB 계정으로 이동하면 이제 두 개의 데이터베이스가 표시됩니다.

.Net SDK를 사용하여 코드에서 데이터베이스를 보거나 나열 할 수도 있습니다. 다음은 관련된 단계입니다.

Step 1 − 전체 목록을 반환하는 매개 변수없이 데이터베이스 쿼리를 발행하지만 특정 데이터베이스 또는 특정 데이터베이스를 찾기 위해 쿼리를 전달할 수도 있습니다.

private static void GetDatabases(DocumentClient client) {
   Console.WriteLine();
   Console.WriteLine();
   Console.WriteLine("******** Get Databases List ********");
	
   var databases = client.CreateDatabaseQuery().ToList(); 
	
   foreach (var database in databases) { 
      Console.WriteLine(" Database Id: {0}; Rid: {1}", database.Id, database.ResourceId);
   }
	
   Console.WriteLine(); 
   Console.WriteLine("Total databases: {0}", databases.Count);
}

컬렉션, 문서, 사용자 및 기타 리소스를 찾기위한 이러한 CreateQuery 메서드가 많이 있음을 알 수 있습니다. 이러한 메서드는 실제로 쿼리를 실행하지 않고 쿼리를 정의하고 반복 가능한 개체를 반환합니다.

실제로 쿼리를 실행하고 결과를 반복하며 목록으로 반환하는 것은 ToList ()에 대한 호출입니다.

Step 2 − DocumentClient가 인스턴스화 된 후 CreateDocumentClient 작업에서 GetDatabases 메서드를 호출합니다.

Step 3 − 또한 CreateDatabase 작업에 주석을 달거나 데이터베이스 ID를 변경해야합니다. 그렇지 않으면 데이터베이스가 존재한다는 오류 메시지가 표시됩니다.

using (var client = new DocumentClient(new Uri(EndpointUrl), AuthorizationKey)) {
   //await CreateDatabase(client); 
   GetDatabases(client); 
}

다음은 지금까지의 완전한 Program.cs 파일입니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Microsoft.Azure.Documents;
using Microsoft.Azure.Documents.Client;
using Microsoft.Azure.Documents.Linq;
using Newtonsoft.Json; 

namespace DocumentDBDemo {

   class Program {
      private const string EndpointUrl = "https://azuredocdbdemo.documents.azure.com:443/";
		
      private const string AuthorizationKey = "BBhjI0gxdVPdDbS4diTjdloJq7Fp4L5RO/
         StTt6UtEufDM78qM2CtBZWbyVwFPSJIm8AcfDu2O+AfV T+TYUnBQ==";
			
      static void Main(string[] args) {
         try {
            CreateDocumentClient().Wait();
         } catch (Exception e) {
            Exception baseException = e.GetBaseException();
            Console.WriteLine("Error: {0}, Message: {1}", e.Message, baseException.Message);
         }
         Console.ReadKey();
      }
		
      private static async Task CreateDocumentClient() {
         // Create a new instance of the DocumentClient
         using (var client = new DocumentClient(new Uri(EndpointUrl), AuthorizationKey)) {
            await CreateDatabase(client);
            GetDatabases(client);
         } 
      }
		
      private async static Task CreateDatabase(DocumentClient client) {
         Console.WriteLine();
         Console.WriteLine("******** Create Database *******");
			
         var databaseDefinition = new Database { Id = "mynewdb" };
         var result = await client.CreateDatabaseAsync(databaseDefinition);
         var database = result.Resource;
			
         Console.WriteLine(" Database Id: {0}; Rid: {1}", database.Id, database.ResourceId);
         Console.WriteLine("******** Database Created *******");
      }
		
      private static void GetDatabases(DocumentClient client) {
         Console.WriteLine();
         Console.WriteLine();
         Console.WriteLine("******** Get Databases List ********");
			
         var databases = client.CreateDatabaseQuery().ToList();
			
         foreach (var database in databases) {
            Console.WriteLine(" Database Id: {0}; Rid: {1}",
               database.Id, database.ResourceId);
         }  
			
         Console.WriteLine(); 
         Console.WriteLine("Total databases: {0}", databases.Count);
      }
		
   } 
}

위의 코드가 컴파일되고 실행되면 두 데이터베이스의 데이터베이스 및 리소스 ID가 포함 된 다음 출력이 표시됩니다. 결국 총 데이터베이스 수도 표시됩니다.

******** Get Databases List ******** 
 Database Id: myfirstdb; Rid: Ic8LAA== 
 Database Id: mynewdb; Rid: ltpJAA==  
Total databases: 2