2017-07-23 64 views
0
// I am using code like below 
Document doc = client.CreateDocumentQuery<Document>(collectionLink) 
          .Where(r => r.Id == "doc id")  
          .AsEnumerable() 
          .SingleOrDefault(); 

doc.SetPropertyValue("MyProperty1", "updated value"); 
Document updated = await client.ReplaceDocumentAsync(doc); 

想從文檔中刪除「MyProperty2」與移除屬性使用replacedocumentasync。這個怎麼做?Azure的宇宙Db的文件 - 所需的文檔

+0

請告訴如果Microsoft.Azure.Document有任何方法從文檔中刪除屬性 – user1853141

回答

2

看來你想更新MyProperty1屬性並從文檔中刪除MyProperty2屬性,下面的示例代碼僅供參考。

private async Task updateDoc() 
{ 
    string EndpointUri = "xxxxx"; 
    string PrimaryKey = "xxxxx"; 
    DocumentClient client; 

    client = new DocumentClient(new Uri(EndpointUri), PrimaryKey); 

    Document doc = client.CreateDocumentQuery<Document>(UriFactory.CreateDocumentCollectionUri("testdb", "testcoll")) 
       .Where(r => r.Id == "doc5") 
       .AsEnumerable() 
       .SingleOrDefault(); 

    //dynamically cast doc back to your MyPoco 
    MyPoco poco = (dynamic)doc; 

    //Update MyProperty1 of the poco object 
    poco.MyProperty1 = "updated value"; 

    //replace document 
    Document updateddoc = await client.ReplaceDocumentAsync(doc.SelfLink, poco); 


    Console.WriteLine(updateddoc); 
} 

public class MyPoco 
{ 
    public string id { get; set; } 
    public string MyProperty1 { get; set; } 
} 

我的文檔: enter image description here 更新時間: enter image description here

編輯:

這將消除 「MyProperty3」 和 「MyProperty4」 爲好。

正如你所說,設置屬性爲null也是一種方法。

Document doc = client.CreateDocumentQuery<Document>(UriFactory.CreateDocumentCollectionUri("testdb", "testcoll")) 
      .Where(r => r.Id == "doc5") 
      .AsEnumerable() 
      .SingleOrDefault(); 

doc.SetPropertyValue("MyProperty2", null); 

//replace document 
Document updateddoc = await client.ReplaceDocumentAsync(doc.SelfLink, doc); 
+0

感謝Fred。但是這會刪除MyPoco中存在的「MyProperty3」和「MyProperty4」。 – user1853141

+0

Hi @ user1853141,我編輯了回覆。 –

0

感謝您的回覆。你明白了我的要求。 我不想使用MyPoco作爲使用Microsoft.Azure.Document是最靈活的。 此外,使用這種方法也會刪除任何MyProperty3,如果它與MyPoco一起存在的話。 僅使用文檔類,以下工作。 eachDoc.SetPropertyValue(「MyProperty2」,null);