我有一个继承自Azure Microsoft.Azure.Documents.Document
类的文档,这是我的属性的结构。
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("establishment")]
public string Establishment { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
我可以保存文档,但是在尝试更新文档并替换文档时遇到了问题。
例如,如果我要执行以下操作,则文档的描述永远不会更新。
var project = documentRepository.FindById<ProjectDocument>("7fc2899e-4c7f-4c09-9f60-4ca28caca750");
project.Description = "Foo";
await documentRepository.Save(project);
但是,如果我这样做,那就确实如此。
var project = documentRepository.FindById<ProjectDocument>("7fc2899e-4c7f-4c09-9f60-4ca28caca750");
project.SetPropertyValue("description", "Foo");
await documentRepository.Save(project);
显然我不想这样做,因为它似乎是不必要的。
值得注意的是,我使用自己的库Documental
来使用存储库模式,但底层代码只是调用Azure DocumentDB库,直接使用DocumentDB库时遇到同样的问题
更新:对象的运行时视图按预期包含更改字段的正确值,但除非我使用SetPropertyValue
方法,否则对象的动态视图始终包含其原始值。
答案 0 :(得分:1)
正如我在相关的Github帖子中提到的那样,从Document扩展类时似乎存在一个错误。请从Resource作为基类扩展,一切都应该正常。然后,您需要使用接受docLink和更新对象的ReplaceDocumentAsync的其他重载。
请告诉我这是否适合您。
答案 1 :(得分:0)
在您的代码中,示例
您可以使用文档db API中提供的switch (expression) {
case: {
somethings;
break;
}
}
,它可以为您完成所有脏工作,并替换文档。您会找到详细信息here