如何在RavenDB中为文档建模这种关系?

时间:2012-02-27 22:07:16

标签: ravendb

我正在与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

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

2 个答案:

答案 0 :(得分:4)

您当前的模型针对最终性能进行了优化,因为它会对两端的参考进行非规范化。一般来说这很好,但是当标题在任何一方改变时,它需要做更多工作的成本。

如果你的性能稍差(在大多数情况下你肯定可以),我宁愿选择.Include()方法。

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

答案 1 :(得分:3)

NotMyself, 您不需要Presenter.Presentations属性。你很少(如果有的话)试图从演示者那里加载演示文稿,当你这样做时,你会想要通过分页,排序等来实现这一点。

在演示文稿中对演示者进行非规范化是很好的。您无需更新演示者名称。 例如,我以前主要是Ayende Rahien,现在我和Oren Eini一样。不过,旧的演示文稿不需要改变。