DocumentDB - Lister les bases de données

Jusqu'à présent, nous avons créé deux bases de données dans notre compte DocumentDB, la première est créée à l'aide du portail Azure tandis que la seconde est créée à l'aide du SDK .Net. Maintenant, pour afficher ces bases de données, vous pouvez utiliser le portail Azure.

Accédez à votre compte DocumentDB sur le portail Azure et vous verrez maintenant deux bases de données.

Vous pouvez également afficher ou répertorier les bases de données à partir de votre code à l'aide du SDK .Net. Voici les étapes impliquées.

Step 1 - Émettez une requête de base de données sans paramètres qui renvoie une liste complète, mais vous pouvez également transmettre une requête pour rechercher une base de données spécifique ou des bases de données spécifiques.

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

Vous verrez qu'il existe un tas de ces méthodes CreateQuery pour localiser des collections, des documents, des utilisateurs et d'autres ressources. Ces méthodes n'exécutent pas réellement la requête, elles définissent simplement la requête et renvoient un objet itératif.

C'est l'appel à ToList () qui exécute réellement la requête, itère les résultats et les renvoie dans une liste.

Step 2 - Appelez la méthode GetDatabases à partir de la tâche CreateDocumentClient une fois DocumentClient instancié.

Step 3 - Vous devez également commenter la tâche CreateDatabase ou modifier l'ID de la base de données, sinon vous obtiendrez un message d'erreur indiquant que la base de données existe.

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

Voici le fichier Program.cs complet à ce jour.

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

Lorsque le code ci-dessus est compilé et exécuté, vous recevrez la sortie suivante qui contient les ID de base de données et de ressources des deux bases de données. À la fin, vous verrez également le nombre total de bases de données.

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