DocumentDB - Veritabanlarını Bırak

Net SDK kullanarak portaldan ve koddan bir veritabanı veya veritabanları bırakabilirsiniz. Burada, bir veritabanının DocumentDB'ye nasıl bırakılacağını adım adım tartışacağız.

Step 1- Azure portalında DocumentDB hesabınıza gidin. Demo amacıyla, aşağıdaki ekran görüntüsünde görüldüğü gibi iki veritabanı daha ekledim.

Step 2- Herhangi bir veritabanını bırakmak için o veritabanına tıklamanız gerekir. Tempdb'yi seçelim, sonraki sayfada göreceksiniz, 'Veritabanını Sil' seçeneğini seçin.

Step 3 - Onay mesajını gösterecek, şimdi 'Evet' düğmesine tıklayın.

Tempdb'nin artık gösterge tablonuzda bulunmadığını göreceksiniz.

Ayrıca .Net SDK kullanarak veritabanlarını kodunuzdan silebilirsiniz. Aşağıdakiler yapmak için adımlar.

Step 1 - Silmek istediğimiz veritabanının ID'sini belirterek veritabanını silelim, ancak SelfLink'e ihtiyacımız var.

Step 2 - CreateDatabaseQuery'yi daha önce olduğu gibi çağırıyoruz, ancak bu sefer aslında tempdb1 kimliğine sahip tek bir veritabanını döndürmek için bir sorgu sağlıyoruz.

private async static Task DeleteDatabase(DocumentClient client) {
   Console.WriteLine("******** Delete Database ********");
   Database database = client
      .CreateDatabaseQuery("SELECT * FROM c WHERE c.id = 'tempdb1'")
      .AsEnumerable()
      .First();
   await client.DeleteDatabaseAsync(database.SelfLink);
}

Step 3- Bu sefer ToList () yerine AsEnumerable'ı çağırabiliriz çünkü aslında bir liste nesnesine ihtiyacımız yok. Yalnızca sonuç beklenirken, First () ile sorgu tarafından döndürülen ilk veritabanı nesnesini alabilmemiz için AsEnumerable'ı çağırmak yeterlidir. Bu tempdb1 için veritabanı nesnesidir ve veritabanını silen DeleteDatabaseAsync'i çağırmak için kullanabileceğimiz bir SelfLink'e sahiptir.

Step 4 - DocumentClient başlatıldıktan sonra CreateDocumentClient görevinden DeleteDatabase görevini de çağırmanız gerekir.

Step 5 - Belirtilen veritabanını sildikten sonra veritabanları listesini görüntülemek için GetDatabases yöntemini tekrar çağıralım.

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

Şimdiye kadarki tam Program.cs dosyası aşağıdadır.

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);
            await DeleteDatabase(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);
      }
		
      private async static Task DeleteDatabase(DocumentClient client) {
         Console.WriteLine();
         Console.WriteLine("******** Delete Database ********");
			
         Database database = client
            .CreateDatabaseQuery("SELECT * FROM c WHERE c.id = 'tempdb1'")
            .AsEnumerable()
            .First();
         await client.DeleteDatabaseAsync(database.SelfLink);
      }
		
   }
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, üç veritabanının Veritabanı ve Kaynak Kimliklerini ve toplam veritabanı sayısını içeren aşağıdaki çıktıyı alırsınız.

******** Get Databases List ******** 
 Database Id: myfirstdb; Rid: Ic8LAA== 
 Database Id: mynewdb; Rid: ltpJAA== 
 Database Id: tempdb1; Rid: 06JjAA==
 
Total databases: 3  

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

Veritabanını sildikten sonra, sonunda DocumentDB hesabında sadece iki veritabanının kaldığını göreceksiniz.