这是一个小问题
有一个带有值对象的实体。没问题 我将值对象替换为新值对象,然后nhibernate插入新值并孤立旧值,然后将其删除。好,那是个问题。
被保险人是我在我域中的实体。他有一组地址(值对象)。地址之一是MailingAddress。当我们要更新邮寄地址时,假设邮编是错误的,按照埃文斯先生的学说,我们必须将旧对象替换为新对象,因为它是不可变的(值对象对吗?)。
但是我们不想删除您的行,因为该地址的PK是MailingHistory表中的FK。因此,按照埃文斯先生的学说,我们在这里几乎陷入了困境。除非我将地址设为实体,否则就不必“替换”它,只需像过去的美好时光那样更新其邮政编码成员即可。
在这种情况下,您会建议我什么?从我的角度来看,ValueObjects仅在您希望封装一组数据库表的列(nhibernate中的组件)时才有用。最好在数据库中具有持久性ID的所有对象都设置为实体(不一定是聚合根),这样您就可以在不重新创建整个对象图的情况下更新其成员,特别是如果这是一个深层嵌套的对象。
你同意吗?埃文斯先生是否允许使用可变的价值对象?还是可变值对象是实体的候选对象?
谢谢