DocumentDB永远不会创建文档

时间:2017-03-12 22:09:26

标签: c# .net azure azure-cosmosdb

我不确定我在这里做错了什么,但我正在尝试将文档插入存储数据库my-documents中的my-db,但这种情况不会发生。

我创建了一个像这样的文档客户端 -

  _endpointUri = new Uri(Properties.Settings.Default.DocumentDBEndpoint);
  _privateKey = Properties.Settings.Default.DocumentDBKey;
  _databaseName = Properties.Settings.Default.DocumentDBDatabase;
  _collectionName = collectionName;
  _collectionUri = UriFactory.CreateDocumentCollectionUri(_databaseName, _collectionName);

  _documentClient = new DocumentClient(_endpointUri, _privateKey);
然后我尝试将文档插入到集合中。

public async Task Set(T document)
{
  await _documentClient.CreateDocumentAsync(_collectionUri.ToString(), document);
}

我尝试传递_collectionUri以及toString,他们都做同样的事情。如果我单步执行调试器,那个集合的toString uri看起来像 -

DBS /我的-DB / colls /我的文档

我已经尝试在通话中设置.ConfigureAwait(false),并且根本不等待它。当然,当它没有被等待时,它会越过细线,但是没有文档被添加到my-documents集合中。

我不确定我是否正在使用CreateDocumentAsync(也尝试UpsertDocumentAsync),因为不会抛出错误。

任何人都可以从信息中看出我犯的错误是什么?

编辑在我使用Azure进行的测试中,我确实选择将DocumentDB与MongoDB Api一起使用。这可能是相关的。因为我可以很容易地将它全部吹走,所以我将使用DocumentDB Api重新创建它,看看是否能解决问题。

1 个答案:

答案 0 :(得分:0)

事实证明这是我假设的两个不同的问题。

文档未创建 -

所以我最初设置它来使用MongoDB驱动程序,它将我的数据库/集合转储到Azure存储中。永远不会创建文档的问题是因为DocumentDB不会将自身存储在Azure存储资源中。在Settings>下创建新的DocumentDB外观时收藏品>浏览以查看不存在任何数据库。遗憾的是,DocumentDB没有桌面数据库管理应用程序,这需要在天蓝色门户网站上完成。

因此,显而易见的是,由于上述原因,我所指出的数据库/集合并不存在。

等待永不返回 -

显然,如果你要等待一些东西,你需要等待一直到调用堆栈。

(async) POST:Api (awaits) - > (async) Service:CreateDocument - > (async) Repository:Set (awaits) - > (async) DocumentClient:CreateDocumentAsync

问题在于即使我的​​服务是异步的,也不是等待Repository:Set的调用。等待链上的所有内容使我能够逐步接收服务器的响应。