我在NHibernate映射中遇到问题 . 我有 class 公司,人员和地址;公司和个人都可以拥有地址,因此我在两者中都采用了地址 . 为了存储这个,我有公司,人员和地址表 . 现在公司将拥有Address对象,Person也将具有Address Object,因此Address也应该引用Company和Person对象 . 所以我创建了两个地址1的子类.CompanyAddress 2. PersonAddress和在数据库中我创建了另外两个表Company_Address和Person_Address . 现在在Address.hbm.xml中,我为CompanyAddress和PersonAddress添加了Joined子类,它们分别引用了Company_Address和Person_Address表 .
现在,CompanyAddress类中包含公司对象,而PersonAddress类中包含Person对象 .
Company_Address有2列AddressId(PK)和CompanyId(FK) - >公司Person_Address有2列AddressId(PK)和PersonId(FK) - > Person
我在Company.hbm.xml中为Address创建了一对一映射 . 当我保存公司对象时,除了Company_Address之外,每个表都正确填充 . AddressId已存储,但未存储CompanyId .
我不知道如何让这个工作
如果有人可以遇到这个问题,请帮忙 .
提前致谢!!! Pawan Shukla
2 回答
听起来你可能已经过度规范了,因为你已经 Build 了一对一的映射 . 可能更容易(和代码中的WAY更清晰)是将地址字段放在Company和Person表中,然后设置一个简单的地址对象并将其视为一个组件 . 这是我的地址类:
然后将地址视为一个组件,并将其映射为:
不要这样做 . 地址显然不是一个实体(因此没有自己的表,也没有主键) . 我宁愿做的是将其建模为一个组件 . 示例映射可能如下所示:
只是谷歌一点 . 在DDD中,有一个与实体相对的值对象的概念,在NHibernate中建模值对象的方法是使用组件 .