我正在开发一个简单的问答论坛。我想使用Azure DocumentDB。
如何在DocumentDB中添加现有问题文档的答案?
在我的情况下,我已经完成了与问题相同类型的答案列表:
public List<Announcement> { get; set; }
我的文档对象如下所示:
public class Announcement
{
[JsonProperty(PropertyName = "id")]
public string ID { get; set; }
[JsonProperty(PropertyName = "userid")]
public int UserID { get; set; }
[JsonProperty(PropertyName = "username")]
public string UserName { get; set; }
[JsonProperty(PropertyName = "useripaddress")]
public string UserIPAddress { get; set; }
[JsonProperty(PropertyName = "body")]
public string Body { get; set; }
[JsonProperty(PropertyName = "tags")]
public List<string> Tags { get; set; }
[JsonProperty(PropertyName = "datecreate")]
public DateTime DateCreate { get; set; }
[JsonProperty(PropertyName = "isedited")]
public bool IsEdited { get; set; }
[JsonProperty(PropertyName = "dateedit")]
public DateTime DateEdit { get; set; }
[JsonProperty(PropertyName = "imageaddonid")]
public string ImageAddonId { get; set; }
[JsonProperty(PropertyName = "imageaddonsource")]
public string ImageAddonSource { get; set; }
[JsonProperty(PropertyName = "answers")]
public List<Announcement> { get; set; }
}
我没有在DocumentClient中看到任何更新方法:/。
答案 0 :(得分:5)
对我来说,您需要使用ReplaceDocumentAsync
方法来更新文档。
据我所知,你需要更换整个文件;因为当你改变某些东西时,你更新整个文档而不是它的一部分。
您可以查看有关方法here
的文档答案 1 :(得分:2)
目前您无法更新部分文档,您必须更新整个文档。更新文档的一部分是经常请求的功能,您可以投票给Microsoft以便将来添加它。在Azure的Uservoice上执行此操作:https://feedback.azure.com/forums/263030-documentdb/suggestions/6693091-be-able-to-do-partial-updates-on-document
在任何情况下,您都应该重新考虑是否要将嵌入答案放入问题本身。
根据文章Modeling data in DocumentDB,您应该嵌入
实体之间包含关系。
实体之间存在一对一的关系。
嵌入式数据不经常更改。
嵌入式数据不会无限制地增长。
嵌入数据是文档中数据的组成部分。
如果你看一下粗体的项目符号,看起来问题里面的答案可能不是一个好主意,因为你可能有数千个答案,问题文档会经常变化。
相反,你可以拥有