文档db - 非规范化引用 - 最佳实践

时间:2011-08-20 14:15:25

标签: design-patterns ravendb document-database

哟 - 这本身不是一个ravendb问题 - 这是另一个设计问题 与文件dbs有关。

所以我一直在使用DenormalizedReference,它有 刚刚发现,在很多地方,这使DDD变得相当困难。

所以,比如说,我有一个有子集合的对象:

 List<DenormalizedReference<SomeType>>

在父实例化时创建此子集合 接受List<SomeOtherType>

的重载构造函数

现在 - 在ctor中我想从SomeOtherType创建这个列表 传入的集合 - 这意味着我需要创建一个新的 SomeOtherType的SomeType。

没有将DocumentSession传递到我的域中 - 我不是 要去做 - 这不会工作,因为父母AR被保存了我们 丢失除Id和Name

之外的每个子对象的属性

其他人如何处理这个?

1 个答案:

答案 0 :(得分:4)

你做不到。 或者说,你不应该这样做。

有几种方法可以解决这个问题,通常使用静态网关来获取会话,但问题是这种方法会创建一个延迟加载的集合,并带来所有问题。

RavenDB专门用于避免此类问题。并且您可以包含项目以避免返回到服务器,但您不应该尝试透明地在ID和类型之间移动。