在collectionSelfLink中看到很多异常

时间:2016-01-30 03:37:05

标签: azure azure-cosmosdb

我在调用DocumentDb时看到了collectionSelfLink中的很多异常 - 见下图。

我能够连接到DocumentDb并读取数据,但这些例外情况与我有关 - 特别是在像collectionSelfLink这样非常简单的事情中。

知道可能导致他们的原因以及如何解决这些问题? enter image description here

以下是使用selfLink

的功能
public async Task<IEnumerable<T>> ReadQuery<T>(string dbName, string collectionId, SqlQuerySpec query)
{
   // Prepare collection self link
   // IMPORTANT: This is where I'm seeing those exceptions when I inspect the collectionLink. Otherwise, I'm NOT getting any errors.
   var collectionLink = UriFactory.CreateDocumentCollectionUri(dbName, collectionId);

   var result = _client.CreateDocumentQuery<T>(collectionLink, query, null);
   _client.CreateDocumentQuery<T>(collectionLink);
   return await result.QueryAsync();
}

这里是QueryAsync()扩展方法

public async static Task<IEnumerable<T>> QueryAsync<T>(this IQueryable<T> query)
{
   var docQuery = query.AsDocumentQuery();
   var batches = new List<IEnumerable<T>>();

   do
   {
      var batch = await docQuery.ExecuteNextAsync<T>();
      batches.Add(batch);
   }

   while (docQuery.HasMoreResults);
   var docs = batches.SelectMany(b => b);

   return docs;
}

1 个答案:

答案 0 :(得分:0)

因此,SelfLink是由DocumentDB设置的内部属性。它不能由用户设置,只会填充从调用服务器返回的资源。

您正在使用的UriFactory代码构建了一个可用于执行操作的链接,但它不是SelfLink。

如果您正在查看新初始化的DocumentCollection()对象上的SelfLink属性,则SelfLink将为null,因为它尚未在服务器上保留。这可以解释调试监视中的所有错误。