在 RavenDB 中将相关文档表示为一个对象
Expressing related documents as one object in RavenDB
我刚刚开始使用RavenDB,并研究了相关文档的文档。我正在考虑使用的系统有两个 类,Family 和 Member。
一个家庭可以有多个成员,一个成员可以属于多个家庭。也可以单独检索和更新成员。根据我正在阅读的内容,对此建模的正确方法是为家庭准备一个文档,为成员准备另一个文档。并让 Family 包含一个 MemberId 列表。
太棒了!
RavenDB 站点 https://ravendb.net/docs/article-page/3.0/csharp/indexes/querying/handling-document-relationships
上描述了上述方法
但是,这意味着您要分别处理每个对象。您必须使用单独的加载命令分别 "fetch" 每个成员对象。即使您使用包含 "prefetch" 所有相关对象到会话中,您仍然必须为每个对象发出单独的加载命令。
这意味着 Family 对象不包含 Member 对象列表,而只包含 MemberId 列表。
这是我的问题:有没有办法让 RavenDB return 来自相关文档的复杂对象,这样当您取回 Family 对象时,它将包含相关成员对象的列表?我知道如果你把成员对象直接放在family对象中,这样是可以的,但是那样就不允许一个成员对象在别处(其他family)使用了。
此外,有没有办法告诉 RavenDB 将某些嵌入列表 "deconstruct" 到相关文档中,而不是将它们存储在同一个文档中?
这似乎是一件很有帮助的事情。
你可以为此使用变压器,是的。
我刚刚开始使用RavenDB,并研究了相关文档的文档。我正在考虑使用的系统有两个 类,Family 和 Member。
一个家庭可以有多个成员,一个成员可以属于多个家庭。也可以单独检索和更新成员。根据我正在阅读的内容,对此建模的正确方法是为家庭准备一个文档,为成员准备另一个文档。并让 Family 包含一个 MemberId 列表。
太棒了!
RavenDB 站点 https://ravendb.net/docs/article-page/3.0/csharp/indexes/querying/handling-document-relationships
上描述了上述方法但是,这意味着您要分别处理每个对象。您必须使用单独的加载命令分别 "fetch" 每个成员对象。即使您使用包含 "prefetch" 所有相关对象到会话中,您仍然必须为每个对象发出单独的加载命令。
这意味着 Family 对象不包含 Member 对象列表,而只包含 MemberId 列表。
这是我的问题:有没有办法让 RavenDB return 来自相关文档的复杂对象,这样当您取回 Family 对象时,它将包含相关成员对象的列表?我知道如果你把成员对象直接放在family对象中,这样是可以的,但是那样就不允许一个成员对象在别处(其他family)使用了。
此外,有没有办法告诉 RavenDB 将某些嵌入列表 "deconstruct" 到相关文档中,而不是将它们存储在同一个文档中?
这似乎是一件很有帮助的事情。
你可以为此使用变压器,是的。