【发布时间】:2012-01-03 18:47:49
【问题描述】:
在我目前正在使用的应用程序中,我刚刚将 db4o 替换为 RavenDB。我只是注意到有些东西不起作用,做了一些研究,现在我需要进行健全性检查。
让我们假设这个领域模型:
Person 具有 Name、Address 和 Car 属性。
汽车具有品牌、型号和里程属性。
使用 RavenDB,我可以创建汽车并保存它。然后我可以创建一个 Person 并将 Car 分配给 Person 的 Car 属性。当我保存 Person 时,Car 会保存在 Person 中。一切似乎都很好。
问题是当我稍后更新 Car.Mileage 时。 Car 在 RavenDB 中更新,但不在 Person.Car 中。 Person.Car 有旧里程。
汽车是独立存在的。人乔可以拥有这辆车,人南希也可以。两个 Person 对象都会引用 Car。
在 RavenDB 中,这应该如何处理?从我读过的关于聚合/根对象的所有内容来看,看起来我应该为 Person 添加一个 CarId 属性。然后,当我加载 Person 时,还要通过 ID 手动加载 Car。那正确吗?或者我可以在 Person 中嵌入 Car 属性,并以某种方式让所有 Person 对象显示正确的 Person.Car.Mileage,因为 Car.Mileage 会随时间而变化?
【问题讨论】:
-
鲍勃,我会就此写一篇文章,因为这似乎是一个常见问题。
-
谢谢,丹尼尔。是否可以对整体方法发表评论?我需要在明天之前完成这项工作。我今天总是可以用一种方式编码,以后再改变,但如果我第一次能正确地做到这一点......
-
等几分钟... :)
-
请看下面我的回答,再等几分钟...
标签: ravendb