DocumentDB - Xóa Bộ sưu tập
Để bỏ bộ sưu tập hoặc bộ sưu tập, bạn có thể làm tương tự từ cổng thông tin cũng như từ mã bằng cách sử dụng .Net SDK.
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 bộ sưu tập nữa như được thấy trong ảnh chụp màn hình sau.
Step 2- Để thả bộ sưu tập nào, bạn cần nhấp vào bộ sưu tập đó. Hãy chọn TempCollection1. Bạn sẽ thấy trang sau, chọn tùy chọn 'Xóa Bộ sưu tập'.
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 TempCollection1 không còn khả dụng trên trang tổng quan của bạn.
Bạn cũng có thể xóa các bộ sưu tập khỏi mã của mình bằng cách sử dụng .Net SDK. Để làm điều đó, hãy làm theo các bước sau.
Step 1 - Hãy xóa bộ sưu tập bằng cách chỉ định ID của bộ sưu tập mà chúng ta muốn xóa.
Đây là kiểu truy vấn thông thường theo Id để lấy các selfLinks cần thiết để xóa tài nguyên.
private async static Task DeleteCollection(DocumentClient client, string collectionId) {
Console.WriteLine();
Console.WriteLine("**** Delete Collection {0} in {1} ****", collectionId, database.Id);
var query = new SqlQuerySpec {
QueryText = "SELECT * FROM c WHERE c.id = @id",
Parameters = new SqlParameterCollection {
new SqlParameter {
Name = "@id", Value = collectionId
}
}
};
DocumentCollection collection = client.CreateDocumentCollectionQuery(database.SelfLink,
query).AsEnumerable().First();
await client.DeleteDocumentCollectionAsync(collection.SelfLink);
Console.WriteLine("Deleted collection {0} from database {1}", collectionId,
database.Id);
}
Ở đây, chúng ta thấy cách ưa thích để xây dựng một truy vấn tham số hóa. Chúng tôi không mã hóa cứng collectionId vì vậy phương pháp này có thể được sử dụng để xóa bất kỳ bộ sưu tập nào. Chúng tôi đang truy vấn một tập hợp cụ thể theo Id trong đó tham số Id được xác định trong SqlParameterCollection này được gán cho thuộc tính của tham số của SqlQuerySpec này.
Sau đó, SDK thực hiện công việc xây dựng chuỗi truy vấn cuối cùng cho DocumentDB với collectionId được nhúng bên trong nó.
Step 2 - Chạy truy vấn và sau đó sử dụng SelfLink của nó để xóa bộ sưu tập khỏi tác vụ CreateDocumentClient.
private static async Task CreateDocumentClient() {
// Create a new instance of the DocumentClient
using (var client = new DocumentClient(new Uri(EndpointUrl), AuthorizationKey)) {
database = client.CreateDatabaseQuery("SELECT * FROM c WHERE c.id =
'myfirstdb'").AsEnumerable().First();
await DeleteCollection(client, "TempCollection");
}
}
Sau đây là quá trình triển khai hoàn chỉnh của tệp 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==";
private static Database database;
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)) {
database = client.CreateDatabaseQuery("SELECT * FROM c WHERE c.id =
'myfirstdb'").AsEnumerable().First();
await DeleteCollection(client, "TempCollection");
//await CreateCollection(client, "MyCollection1");
//await CreateCollection(client, "MyCollection2", "S2");
////await CreateDatabase(client);
//GetDatabases(client);
//await DeleteDatabase(client);
//GetDatabases(client);
}
}
private async static Task CreateCollection(DocumentClient client,
string collectionId, string offerType = "S1") {
Console.WriteLine();
Console.WriteLine("**** Create Collection {0} in {1} ****", collectionId,
database.Id);
var collectionDefinition = new DocumentCollection { Id = collectionId };
var options = new RequestOptions { OfferType = offerType };
var result = await client.CreateDocumentCollectionAsync(database.SelfLink,
collectionDefinition, options);
var collection = result.Resource;
Console.WriteLine("Created new collection");
ViewCollection(collection);
}
private static void ViewCollection(DocumentCollection collection) {
Console.WriteLine("Collection ID: {0} ", collection.Id);
Console.WriteLine("Resource ID: {0} ", collection.ResourceId);
Console.WriteLine("Self Link: {0} ", collection.SelfLink);
Console.WriteLine("Documents Link: {0} ", collection.DocumentsLink);
Console.WriteLine("UDFs Link: {0} ", collection.UserDefinedFunctionsLink);
Console.WriteLine("StoredProcs Link: {0} ", collection.StoredProceduresLink);
Console.WriteLine("Triggers Link: {0} ", collection.TriggersLink);
Console.WriteLine("Timestamp: {0} ", collection.Timestamp);
}
private async static Task DeleteCollection(DocumentClient client,
string collectionId) {
Console.WriteLine();
Console.WriteLine("**** Delete Collection {0} in {1} ****", collectionId,
database.Id);
var query = new SqlQuerySpec {
QueryText = "SELECT * FROM c WHERE c.id = @id", Parameters = new
SqlParameterCollection {
new SqlParameter {
Name = "@id", Value = collectionId
}
}
};
DocumentCollection collection = client.CreateDocumentCollectionQuery
(database.SelfLink, query).AsEnumerable().First();
await client.DeleteDocumentCollectionAsync(collection.SelfLink);
Console.WriteLine("Deleted collection {0} from database {1}", collectionId,
database.Id);
}
}
}
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.
**** Delete Collection TempCollection in myfirstdb ****
Deleted collection TempCollection from database myfirstdb