// 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);
想要删除&#34; MyProperty2&#34;从文件。怎么做?
答案 0 :(得分:3)
您似乎想要更新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; }
}
修改强>
这将删除&#34; MyProperty3&#34;和&#34; MyProperty4&#34;同样。
正如您所提到的,将属性设置为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);
答案 1 :(得分:0)
感谢您的回复。你得到了我所要求的。 我不想使用MyPoco作为使用Microsoft.Azure.Document是最灵活的。 此外,如果MyPoco存在于MyPoco中,使用此方法也会删除任何MyProperty3。 仅使用Document类,以下工作。 eachDoc.SetPropertyValue(&#34; MyProperty2&#34;,null);