我是 DDD 和 NHibernate 的新手。
在我当前的项目中,我有一个实体 Person,其中包含一个值对象,比如说 Address。今天,这很好。但也许有一天我会要求我的值对象(在本例中为地址)必须成为一个实体。
在尝试以 DDD 方式对此建模之前,以更以数据为中心的方法,我有一个表 Person,带有一个 Id,另一个表 Address,其 PK 实际上是一个 FK,它是一个人的 Id(即,一对一的关系)。
我一直在读,当我将一个值对象映射为一个组件时,它的值将被映射为我的实体表上的列(因此,我不会有一对一的关系)。
我的想法是,在需要时,我只需在我的地址表中添加一个代理键,然后它就成为一个实体。
我应该如何使用 NHibernate 设计它?我应该已经让我的地址对象成为实体吗?
抱歉,我什至不知道我的问题是否清楚,我真的迷路了。
最佳答案
在我们正在构建的系统中,我们将值对象放在单独的表中。据我所知,NHibernate 需要一个 id
必须添加到对象中,但我们忽略这一点并将对象视为系统中的值对象。您可能知道,值对象是不需要跟踪的对象,因此我们只需忽略 id
在对象中。这使我们可以更自由地按照我们想要的方式对数据库进行建模,并按照我们想要的方式对域模型进行建模。
关于nhibernate - NHibernate 上的值对象的单独表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1331178/