design-patterns - 文档数据库 - 非规范化引用 - 最佳实践

标签 design-patterns ravendb document-database

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

所以我一直在使用 DenormalizedReference,它已经 我突然想到,在很多地方这使得 DDD 变得相当困难。

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

 List<DenormalizedReference<SomeType>>

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

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

没有将 DocumentSession 传递到我的域中 - 我不是 要做 - 这不会起作用,因为当保存父 AR 时,我们 丢失每个子对象的属性(Id 和 Name 除外)

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

最佳答案

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

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

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

关于design-patterns - 文档数据库 - 非规范化引用 - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7132290/

相关文章:

couchdb - 内存管理方法中的 RavenDb 与 CouchDb

ravendb - 在 RavenDB 中提取元数据

c# - 验证 cosmosdb 集合中的字符串

c - 服务器设计模式/最佳实践的最佳来源是什么?

接口(interface)/抽象类之间的Java关系

c# - 在类之间传递参数 - 使用公共(public)属性或将属性类作为参数传递?

CouchDB 在运行时通过任何文档属性映射/减少?

java - 代理和纪念品模式

c# - 具有不同 LINQ 语法的 Raven Db 似乎无法正常工作

mongodb - 文档数据库设计 : Multi-level categories (MongoDB specifically)