Design patterns 文件数据库-非规范化参考文献-最佳实践
哟-这本身不是ravendb的问题-这是另一个设计问题 用于修饰或说明文件数据库 所以我一直在使用非规范化引用,它已经 我刚想到,在很多地方,这使得DDD相当困难 例如,假设我有一个对象,它有一个子集合:Design patterns 文件数据库-非规范化参考文献-最佳实践,design-patterns,ravendb,document-database,Design Patterns,Ravendb,Document Database,哟-这本身不是ravendb的问题-这是另一个设计问题 用于修饰或说明文件数据库 所以我一直在使用非规范化引用,它已经 我刚想到,在很多地方,这使得DDD相当困难 例如,假设我有一个对象,它有一个子集合: List<DenormalizedReference<SomeType>> 列表 此子集合是在父集合与实例关联时创建的 接受列表的重载构造函数 现在-在ctor中,我想从SomeOtherType创建这个列表 正在传入集合-这意味着我需要创建一个新的 SomeTy
List<DenormalizedReference<SomeType>>
列表
此子集合是在父集合与实例关联时创建的
接受列表的重载构造函数
现在-在ctor中,我想从SomeOtherType创建这个列表
正在传入集合-这意味着我需要创建一个新的
SomeType用于每个SomeOtherType
没有将DocumentSession传递到我的域中-我不是
将要做-这不起作用,因为当父AR被保存时,我们
丢失每个子对象的属性(Id和名称除外)
其他人是怎么处理的?你不能这么做。
或者更确切地说,你不应该那样做
有几种方法可以解决这一问题,通常使用静态网关来获取会话,但问题是这种方法创建了一个延迟加载的集合,并且存在所有这些问题
RavenDB是专门为避免此类问题而设计的。您可以包含项目以避免返回服务器,但您不应该尝试像那样透明地在ID和类型之间移动。所以使用Includes是实现我需要的最好方法?我认为我并没有通过坚持一些关系概念来真正利用RavenDb的潜力。当您至少为一个更大的域选择完整的ddd/cqrs路由时,就会实现真正的值。你同意吗?是和否。这实际上取决于你有什么类型的环境以及你如何使用它。Includes&id是解决引用问题的一种方法,非规范化引用是另一种方法。他们有不同的成本/收益比率,这取决于我们在做什么和我们如何使用东西