DocumentDB - Lista de bases de datos

Hasta ahora, hemos creado dos bases de datos en nuestra cuenta de DocumentDB, la primera se crea usando Azure Portal mientras que la segunda base de datos se crea usando .Net SDK. Ahora, para ver estas bases de datos, puede usar Azure Portal.

Vaya a su cuenta de DocumentDB en Azure Portal y verá dos bases de datos ahora.

También puede ver o enumerar las bases de datos de su código utilizando .Net SDK. Los siguientes son los pasos involucrados.

Step 1 - Emita una consulta de base de datos sin parámetros que devuelva una lista completa, pero también puede pasar una consulta para buscar una base de datos específica o bases de datos específicas.

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

Verá que hay muchos de estos métodos CreateQuery para ubicar colecciones, documentos, usuarios y otros recursos. Estos métodos en realidad no ejecutan la consulta, simplemente la definen y devuelven un objeto iterable.

Es la llamada a ToList () la que realmente ejecuta la consulta, itera los resultados y los devuelve en una lista.

Step 2 - Llame al método GetDatabases desde la tarea CreateDocumentClient después de crear una instancia de DocumentClient.

Step 3 - También debe comentar la tarea CreateDatabase o cambiar la identificación de la base de datos; de lo contrario, recibirá un mensaje de error de que la base de datos existe.

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

A continuación se muestra el archivo Program.cs completo hasta ahora.

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

Cuando se compile y ejecute el código anterior, recibirá el siguiente resultado que contiene los ID de la base de datos y los recursos de ambas bases de datos. Al final, también verá el número total de bases de datos.

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