DocumentDB - Koleksiyonu Sil
Koleksiyonu veya koleksiyonları bırakmak için, aynısını .Net SDK kullanarak hem portaldan hem de koddan yapabilirsiniz.
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 koleksiyon daha ekledim.
Step 2- Herhangi bir koleksiyonu bırakmak için o koleksiyona tıklamanız gerekir. TempCollection1'i seçelim. Aşağıdaki sayfayı göreceksiniz, 'Koleksiyonu Sil' seçeneğini seçin.
Step 3- Onay mesajını gösterecektir. Şimdi 'Evet' düğmesine tıklayın.
TempCollection1'in artık gösterge tablonuzda bulunmadığını göreceksiniz.
Ayrıca .Net SDK kullanarak kodunuzdan koleksiyonları silebilirsiniz. Bunu yapmak için aşağıdaki adımlar şunlardır.
Step 1 - Silmek istediğimiz koleksiyonun ID'sini belirterek koleksiyonu silelim.
Bu, bir kaynağı silmek için gereken selfLink'leri elde etmek için Id'ye göre sorgulamanın olağan modelidir.
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);
}
Burada parametreleştirilmiş bir sorgu oluşturmanın tercih edilen yolunu görüyoruz. CollectionId'yi kodlamıyoruz, bu nedenle bu yöntem herhangi bir koleksiyonu silmek için kullanılabilir. Id parametresinin bu SqlQuerySpec parametresinin özelliğine atanan bu SqlParameterCollection içinde tanımlandığı Id'ye göre belirli bir koleksiyon için sorguluyoruz.
Daha sonra SDK, içine gömülü collectionId ile DocumentDB için son sorgu dizesini oluşturma işini yapar.
Step 2 - Sorguyu çalıştırın ve ardından koleksiyonu CreateDocumentClient görevinden silmek için SelfLink'i kullanın.
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");
}
}
Aşağıda Program.cs dosyasının tam uygulaması verilmiştir.
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);
}
}
}
Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki çıktıyı alacaksınız.
**** Delete Collection TempCollection in myfirstdb ****
Deleted collection TempCollection from database myfirstdb