无法使用microsoft.azure.documentdb.core更新Azure CosmosDB中的文档

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用microsoft.azure.documentdb.core更新Azure CosmosDB中的文档相关的知识,希望对你有一定的参考价值。

我正在尝试使用microsoft.azure.documentdb.core包提供的ReplaceDocumentAsyc方法更新Azure CosmosDB集合中的文档。调用ReplaceDocumentAsyc时,我得到200响应,但集合中的文档本身没有得到更新。以下是简要设置(代码的相关部分)供参考。

    private DocumentClient Client
    {
        get
        {
            if (_client == null)
            {
                _client = new DocumentClient(new Uri(EndpointUrl), AuthorizationKey);
            }

            return _client;
        }
    }

    Client.ReplaceDocumentAsync(documentSelfLink, doc).ContinueWith(response =>
    {
        return new QueryResponse { Success = response.Result.StatusCode == HttpStatusCode.OK, LastChanged = lastChanged };
    });

代码对我来说似乎很好,我相信它之前能够更新集合。还有其他人遇到类似问题吗?

答案

请参考我的工作代码:

using Microsoft.Azure.Documents;
using Microsoft.Azure.Documents.Client;
using Microsoft.Azure.Documents.Linq;
using System;

namespace JayTestDocumentDB
{
    class Program
    {
        private static DocumentClient client;
        private static string EndpointUrl = "https://***.documents.azure.com:443/";
        private static string AuthorizationKey = "***";
        private static string databaseId = "db";
        private static string collectionId = "coll";

        static void Main(string[] args)
        {
            client = new DocumentClient(new Uri(EndpointUrl), AuthorizationKey);
            var uri = UriFactory.CreateDocumentCollectionUri(databaseId, collectionId);

            var options = new FeedOptions
            {
                MaxItemCount = 100
            };      
            FeedResponse<Document> doc = client.CreateDocumentQuery<Document>(uri, options).AsDocumentQuery().ExecuteNextAsync<Document>().Result;

            foreach (Document d in doc)
            {
                Console.WriteLine(d);
                d.SetPropertyValue("name","jay");

                client.ReplaceDocumentAsync(d.SelfLink, d).ContinueWith(response =>
                {
                    Console.WriteLine(response.Result.StatusCode);
                    //return new QueryResponse { Success = response.Result.StatusCode == HttpStatusCode.OK, LastChanged = lastChanged };
                });
                break;
            }
            Console.ReadLine();
        }
    }                    
}

我的microsoft.azure.documentdb.core包版本是2.0.0-preview2

有任何疑虑,请告诉我。

以上是关于无法使用microsoft.azure.documentdb.core更新Azure CosmosDB中的文档的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 StorageClass 配置卷 - 无法获取存储帐户的存储密钥

Worklight Studio 和本地开发,有时无法使用 Java 类,有时无法使用 HTML 文件

ADB无法使用解决办法

Ubuntu 80端口无法使用-非root用户无法使用1024以下端口

无法在 SQL Server 视图中使用工作查询:“IS”无法识别“>”无法识别

LINUX下的mail\mailx为啥无法使用外部SMTP发邮件