DocumentDB-데이터베이스 나열
지금까지 DocumentDB 계정에 두 개의 데이터베이스를 만들었습니다. 첫 번째 데이터베이스는 Azure Portal을 사용하여 만들고 두 번째 데이터베이스는 .Net SDK를 사용하여 만듭니다. 이제 이러한 데이터베이스를 보려면 Azure Portal을 사용할 수 있습니다.
Azure Portal에서 DocumentDB 계정으로 이동하면 이제 두 개의 데이터베이스가 표시됩니다.
.Net SDK를 사용하여 코드에서 데이터베이스를 보거나 나열 할 수도 있습니다. 다음은 관련된 단계입니다.
Step 1 − 전체 목록을 반환하는 매개 변수없이 데이터베이스 쿼리를 발행하지만 특정 데이터베이스 또는 특정 데이터베이스를 찾기 위해 쿼리를 전달할 수도 있습니다.
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);
}
컬렉션, 문서, 사용자 및 기타 리소스를 찾기위한 이러한 CreateQuery 메서드가 많이 있음을 알 수 있습니다. 이러한 메서드는 실제로 쿼리를 실행하지 않고 쿼리를 정의하고 반복 가능한 개체를 반환합니다.
실제로 쿼리를 실행하고 결과를 반복하며 목록으로 반환하는 것은 ToList ()에 대한 호출입니다.
Step 2 − DocumentClient가 인스턴스화 된 후 CreateDocumentClient 작업에서 GetDatabases 메서드를 호출합니다.
Step 3 − 또한 CreateDatabase 작업에 주석을 달거나 데이터베이스 ID를 변경해야합니다. 그렇지 않으면 데이터베이스가 존재한다는 오류 메시지가 표시됩니다.
using (var client = new DocumentClient(new Uri(EndpointUrl), AuthorizationKey)) {
//await CreateDatabase(client);
GetDatabases(client);
}
다음은 지금까지의 완전한 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==";
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);
}
}
}
위의 코드가 컴파일되고 실행되면 두 데이터베이스의 데이터베이스 및 리소스 ID가 포함 된 다음 출력이 표시됩니다. 결국 총 데이터베이스 수도 표시됩니다.
******** Get Databases List ********
Database Id: myfirstdb; Rid: Ic8LAA==
Database Id: mynewdb; Rid: ltpJAA==
Total databases: 2