我在调用DocumentDb时看到了collectionSelfLink中的很多异常 - 见下图。
我能够连接到DocumentDb并读取数据,但这些例外情况与我有关 - 特别是在像collectionSelfLink这样非常简单的事情中。
以下是使用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;
}
答案 0 :(得分:0)
因此,SelfLink是由DocumentDB设置的内部属性。它不能由用户设置,只会填充从调用服务器返回的资源。
您正在使用的UriFactory代码构建了一个可用于执行操作的链接,但它不是SelfLink。
如果您正在查看新初始化的DocumentCollection()对象上的SelfLink属性,则SelfLink将为null,因为它尚未在服务器上保留。这可以解释调试监视中的所有错误。