![]() |
1
1
这将导致设置childs parent属性将调用父方法,而所有其他逻辑都可以放在这些方法中。 应收账 |
![]() |
2
1
只需在parent属性的set accessor中编写将子级添加到父集合的逻辑。 |
![]() |
3
1
也许有一种更聪明的方法可以做到这一点,但最终您只需要确保设置父/子关系的每种方法都检查其他方法(即添加子检查以查看父属性是否已设置,以及设置父属性检查以确保父项包含子项)。
在删除子级之前,我更改了\u Parent的值,因为子级。父级否则将从Parent.Add/RemoveChild代码。 |
![]() |
4
0
我将实现我自己的ISet,并在其中实现父级跟踪。使用常规的HashSet来完成存储对象的工作,但是在类中做一些额外的工作。
但是,这并没有实现您提到的一件事:“如果child有以前的父级,那么该父级的Children集合不再包含child”,因为您还说过“某些实体将具有多个子集合”。
|
![]() |
5
0
我不能给出一个好的代码答案,因为我不理解该域的语义。
当parent是children的聚合根时,我将实现如下所示向父级添加一个新的子级:
这个答案用一行代码概括:“对于应用程序中的所有状态操作,您需要一个具有名称的方法来说明它的作用。” 我看到你的一个规格有问题:只有父级是聚合根。在这种情况下,如果没有父对象,就永远不会使用子对象。这使得双向关系毫无用处,因为当您访问父对象的子对象时,您已经知道父对象。在DDD中,双向关系很难管理,所以最好的解决方案就是避免它们。我知道在使用NHibernate时有几个原因不能避免它们。 下面的代码具有双向关系,并使用内部帮助程序方法解决域处于临时无效状态的问题。内部方法只能从域程序集调用,并且不对外公开。我不太喜欢这种方法,但这是我认为最糟糕的解决方案。
|
![]() |
Giffyguy · 如何限制在构造向量后调用'resize()'? 3 年前 |
![]() |
vytaute · 返回表类型时Oracle函数中的类型错误 3 年前 |
![]() |
bbgghh · 在scala中连接两个列表时如何处理不匹配的键 3 年前 |
![]() |
dev-chicco · Laravel系列寻找常见物品 3 年前 |
![]() |
Mitch · Laravel-雄辩的单品合并系列 7 年前 |
![]() |
Kieran · 为什么类X可以从集合继承<X> 7 年前 |
![]() |
John · 如何在不返回集合本身的情况下返回集合的数据? 7 年前 |
![]() |
Niklas Mertsch · 在泛型集合中实现移除(对象o) 7 年前 |