Я только начал играть с Azure DocumentDB, и мое волнение превратилось в замешательство. Это странно. Вроде бы ко всему (базам данных, коллекциям, документам) нужно обращаться не по его id, а по его «SelfLink». Например:
Я создаю базу данных:
public void CreateDatabase()
{
using (var client = new DocumentClient(new Uri(endpoint), authKey))
{
Database db = new Database()
{
Id = "TestDB",
};
client.CreateDatabaseAsync(db).Wait();
}
}
Затем позже когда-нибудь я хочу создать коллекцию:
public void CreateCollection()
{
using (var client = new DocumentClient(new Uri(endpoint), authKey))
{
DocumentCollection collection = new DocumentCollection()
{
Id = "TestCollection",
};
client.CreateDocumentCollectionAsync(databaseLink: "???", documentCollection: collection).Wait();
}
}
API хочет «databaseLink», когда я действительно предпочел бы дать ему идентификатор моей базы данных. У меня нет под рукой 'databaseLink'. Действительно ли DocumentDB ожидает, что я буду вытягивать список всех баз данных и искать в нем ссылку на базу данных каждый раз, когда я хочу что-то сделать?
Эта проблема идет наперекосяк. Я не могу сохранить документ в коллекцию, не имея «ссылки» на коллекцию.
public void CreateDocument()
{
using (var client = new DocumentClient(new Uri(endpoint), authKey))
{
client.CreateDocumentAsync(documentCollectionLink: "???", document: new { Name = "TestName" }).Wait();
}
}
Поэтому, чтобы сохранить документ, мне нужна ссылка на коллекцию. Чтобы получить ссылку на коллекции, мне нужна ссылка на базу данных. Чтобы получить ссылку на базу данных, мне нужно открыть список всех баз данных в моей учетной записи и просмотреть его. Затем я должен использовать эту ссылку базы данных, которую я нашел, чтобы вывести список коллекций в этой базе данных, которые я затем должен просеять в поисках ссылки на коллекцию, которую я хочу. Это не кажется правильным.
Я что-то пропустил? Я не понимаю, как это использовать? Почему я присваиваю идентификаторы всем своим ресурсам, когда DocumentDB настаивает на использовании собственной схемы ссылок для идентификации всего? Мой вопрос: «Как мне получить доступ к ресурсам DocumentDB по их идентификатору?»