下面是存储在RavenDB中的示例“Order”文档。如果我想只更新一个嵌套文档,例如。 “产品”:“产品/ 2-A”我想单独更新这个嵌套元素,如何使用Raven C#客户端实现这一目标?
示例JSON文档:
{
"Company": "companies/65-A",
"Employee": "employees/1-A",
"Freight": 8.53,
"Lines": [
{
"Discount": 0.2,
"PricePerUnit": 19,
"Product": "products/2-A",
"ProductName": "Chang",
"Quantity": 24
},
{
"Discount": 0,
"PricePerUnit": 10,
"Product": "products/3-A",
"ProductName": "Aniseed Syrup",
"Quantity": 4
},
{
"Discount": 0,
"PricePerUnit": 22,
"Product": "products/4-A",
"ProductName": "Chef Anton's Cajun Seasoning",
"Quantity": 1
}
],
"OrderedAt": "1998-05-06T00:00:00.0000000",
"RequireAt": "1998-06-03T00:00:00.0000000",
"ShipTo": {
"City": "Albuquerque",
"Country": "USA",
"Line1": "2817 Milton Dr.",
"Line2": null,
"Location": {
"Latitude": 35.1154322,
"Longitude": -106.6710792
},
"PostalCode": "87110",
"Region": "NM"
},
"ShipVia": "shippers/2-A",
"ShippedAt": null,
"@metadata": {
"@collection": "Orders",
"@flags": "HasRevisions"
}
}
请提供您的建议。谢谢
如果您要更新相关文档“products / 2-A”,它不是“Lines”数组中的元素,那么唯一要做的就是加载产品,编辑和保存更改。
如果你想更新“Lines”中的元素,我建议你理解RavenDB是如何工作的(或者更常见的是面向文档的数据库是如何工作的)。实体完全保留为文档。然后,您只需要加载和编辑列表中的元素,并使用session.SaveChanges()保持“Order”。
听起来像是在寻找Patch,请看一下这个文档。
https://ravendb.net/docs/article-page/4.1/csharp/client-api%2foperations%2fpatching%2fset-based