【问题标题】:RavenDB modelling 1 to many documentsRavenDB 建模 1 对多文档
【发布时间】:2011-10-12 19:19:25
【问题描述】:

以这个模型为例:

public class Location
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

public class Activity
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

这些文件之间的关系是一个位置可以没有也可以有很多活动。假设伦敦可以有彩弹射击、卡丁车等。

我将这些文档放在一个文档中,但是观看和阅读文档和博客,需要单独访问这些文档。您可以想象为每个位置列出活动的网站页面和提供详细信息的活动页面。

查询示例如下:

  • 获取所有位置
  • 获取位置详细信息(从 URL 中给定位置名称)
  • 获取每个位置的所有活动(从 URL 给定位置名称)
  • 获取活动详细信息(给定位置名称和 URL 中的活动名称)

使用以下描述的 DenormalizedReference 方法:

http://blogs.sonatribe.com/wayne/2011/07/06/using-denormalized-references-in-ravendb/

(我确实看到了这个,但无法弄清楚语法或它是否符合我的需要

http://ravendb.net/faq/denormalized-references )

似乎有点适合我的场景。但是在使用上述类型制作演示项目时,我注意到如果我更改了位置名称,它并没有在活动中更改它。保持文档同步是一件大事。

那么我该如何实现呢?

【问题讨论】:

    标签: c# ravendb


    【解决方案1】:

    菲尔,

    • 在 Activity 中有一个字符串 LocationId 属性,可以让您查询它们。
    • 将活动作为集合存储在 Location 中可能会更容易(因此它们不是单独的文档,而是嵌入其中)。

    【讨论】:

    • 我确实考虑过将活动存储在位置内,但是,这意味着当用户只想查看该位置的一项活动时我会遇到问题(将返回整个文档)。
    • 当您说“查询他们”时,您能否链接到我将如何在 RavenDB 中执行此操作。我可以在使用连接等的 RDBMS 中看到,但在 RavenDB 中不确定。例如,如果我只想从“London”位置文档中进行“Paintballing”,它不会返回整个 London 文档吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    相关资源
    最近更新 更多