我刚开始使用 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();
}
}
当我真正希望给它的是我的数据库 ID 时,api 需要一个“数据库链接”。我手边没有'databaseLink'。DocumentDB 真的希望我每次想要做任何事情时都拉下所有数据库的列表并在其中搜索 databaseLink 吗?
这个问题一直向下。如果没有集合的“链接”,我无法将文档保存到集合中。
public void CreateDocument()
{
using (var client = new DocumentClient(new Uri(endpoint), authKey))
{
client.CreateDocumentAsync(documentCollectionLink: "???", document: new { Name = "TestName" }).Wait();
}
}
因此,要保存文档,我需要集合的链接。要获得收藏链接,我需要数据库链接。要获得数据库链接,我必须拉下我帐户中所有数据库的列表并对其进行筛选。然后我必须使用我发现的那个数据库链接来拉下该数据库中的集合列表,然后我必须筛选以查找我想要的集合的链接。这似乎不对。
我错过了什么吗?我不明白如何使用它吗?当 DocumentDB 坚持使用自己的链接方案来识别所有内容时,为什么我要为我的所有资源分配 ID?我的问题是“如何通过 ID 访问 DocumentDB 资源?”