DocumentDB - Cơ sở dữ liệu Drop

Bạn có thể loại bỏ cơ sở dữ liệu hoặc các cơ sở dữ liệu từ cổng thông tin cũng như từ mã bằng cách sử dụng .Net SDK. Ở đây, chúng ta sẽ thảo luận từng bước về cách thả cơ sở dữ liệu trong DocumentDB.

Step 1- Chuyển đến tài khoản DocumentDB của bạn trên cổng Azure. Với mục đích demo, tôi đã thêm hai cơ sở dữ liệu khác như được thấy trong ảnh chụp màn hình sau.

Step 2- Để thả cơ sở dữ liệu nào, bạn cần bấm vào cơ sở dữ liệu đó. Hãy chọn tempdb, bạn sẽ thấy trang sau, chọn tùy chọn 'Xóa cơ sở dữ liệu'.

Step 3 - Nó sẽ hiển thị thông báo xác nhận, bây giờ hãy nhấp vào nút 'Có'.

Bạn sẽ thấy rằng tempdb không còn khả dụng trong trang tổng quan của bạn.

Bạn cũng có thể xóa cơ sở dữ liệu khỏi mã của mình bằng .Net SDK. Để làm theo các bước sau.

Step 1 - Hãy xóa cơ sở dữ liệu bằng cách chỉ định ID của cơ sở dữ liệu mà chúng ta muốn xóa, nhưng chúng ta cần SelfLink của nó.

Step 2 - Chúng tôi đang gọi CreateDatabaseQuery như trước đây, nhưng lần này chúng tôi thực sự cung cấp một truy vấn để trả về chỉ một cơ sở dữ liệu có ID tempdb1.

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- Lần này, chúng ta có thể gọi AsEnumerable thay vì ToList () vì chúng ta không thực sự cần một đối tượng danh sách. Chỉ mong đợi kết quả, gọi AsEnumerable là đủ để chúng ta có thể lấy đối tượng cơ sở dữ liệu đầu tiên được trả về bởi truy vấn với First (). Đây là đối tượng cơ sở dữ liệu cho tempdb1 và nó có SelfLink mà chúng ta có thể sử dụng để gọi DeleteDatabaseAsync sẽ xóa cơ sở dữ liệu.

Step 4 - Bạn cũng cần gọi tác vụ DeleteDatabase từ tác vụ CreateDocumentClient sau khi DocumentClient được khởi tạo.

Step 5 - Để xem danh sách các cơ sở dữ liệu sau khi xóa cơ sở dữ liệu đã chỉ định, chúng ta hãy gọi lại phương thức GetDatabases.

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

Sau đây là tệp Program.cs hoàn chỉnh cho đến nay.

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

Khi đoạn mã trên được biên dịch và thực thi, bạn sẽ nhận được kết quả sau chứa ID Cơ sở dữ liệu và Tài nguyên của ba cơ sở dữ liệu và tổng số cơ sở dữ liệu.

******** 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

Sau khi xóa cơ sở dữ liệu, bạn cũng sẽ thấy ở cuối chỉ còn lại hai cơ sở dữ liệu trong tài khoản DocumentDB.