2

哟 - 这本身不是一个 ravendb 问题 - 这是另一个与一般文档数据库有关的设计问题。

所以我一直在使用 DenormalizedReference 很多,我刚刚想到在很多地方这使得 DDD 相当困难。

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

 List<DenormalizedReference<SomeType>>

这个子集合是在父类实例化时创建一个重载的构造函数,该构造函数接受一个List<SomeOtherType>

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

如果不将 DocumentSession 传递到我的域中 - 我不会这样做 - 这不会起作用,因为当父 AR 被保存时,我们会丢失每个子对象的属性,除了 Id 和 Name

其他人是如何处理这个问题的?

4

1 回答 1

4

你不能那样做。或者更确切地说,你不应该那样做。

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

RavenDB 是专门为避免此类问题而设计的。并且您可以包含项目以避免返回服务器,但您不应该尝试像那样透明地在 id 和类型之间移动。

于 2011-08-21T07:46:21.610 回答