【问题标题】:How Should I Model this Relationship for a Document in RavenDB?我应该如何为 RavenDB 中的文档建模这种关系?
【发布时间】:2012-03-17 09:39:42
【问题描述】:

我正在使用 RavenDB 进行我的第一个严肃项目,并希望征求建议。我目前在我的领域中有两个概念,Presenters 和 Presentations。演示者可以多次演示,一个演示文稿当前有一个演示者。在关系模型中,我将有两个表,但不确定如何选择文档模式。

我希望能够在即将到来的演示文稿中显示有关演示者的一些最少信息,并拥有一个演示者页面来显示有关其所有演示文稿的信息。 我想出的位于这里:

演讲者:https://github.com/ssdnug/Public-Site/blob/master/src/Web/Models/Presenter.cs

演示文稿:https://github.com/ssdnug/Public-Site/blob/master/src/Web/Models/Presentation.cs

有人对更好的架构有建议吗?

【问题讨论】:

    标签: ravendb


    【解决方案1】:

    您当前的模型已针对最终性能进行了优化,因为它对两端的引用进行了非规范化。通常这很好,但是当标题发生变化时,它会带来必须做更多工作的成本。

    如果您可以忍受稍低的性能(在大多数情况下您肯定可以),我宁愿使用.Include() 方法。

    有关您必须解决此关系问题的选项的一般概述,请查看我的帖子:http://daniellang.net/how-to-handle-relations-in-ravendb/

    【讨论】:

    • 嗨丹尼尔 - 上面的链接不再到达那篇文章。现在还能用吗?
    【解决方案2】:

    不是我自己, 您不需要 Presenter.Presentations 属性。您很少(如果有的话)必须尝试从演示者加载演示文稿,并且当您这样做时,您会希望通过分页、排序等来完成此操作。

    对演示文稿中的 Presenter 进行反规范化是很好的。您无需更新演示者姓名。 例如,我过去主要以 Ayende Rahien 的身份去,现在我以 Oren Eini 的身份去。不过,旧的演示文稿不需要更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 2015-09-25
      • 2023-03-29
      • 2017-08-18
      相关资源
      最近更新 更多