-1

我有一个数据库,该数据库在 Person 和 Address (使用人员 ID)之间建立了一对一的关系。但是,我找不到使用 NHibernate 制作地图的方法。

我的表结构如下:

人表

个人身份
人名
人士

地址表

个人身份
国家的名字
街道名称
州名

我想有这样的东西作为最后一课:

个人类

整数 ID
字符串名称
年龄
地址 HomeAddress

地址类

弦街
字符串国家
字符串状态
个人所有者

我尝试了 HasOne 关系,但我无法重用 PersonId 作为地址标识符。

谢谢!

编辑:我忘了提到我正在使用 FluentNHibernate,所以流畅的映射和 XML 都可以。

4

3 回答 3

0

我在地址类映射中使用 Id().GeneratedBy.Foreign() 将其引用到 Person 的 ID,并且它有效。

谢谢!

于 2010-02-25T14:12:23.537 回答
0

我会将它映射为 Person 的一个组件。在人员 ClassMap 中添加以下内容:

 Component(x => x.Address, m =>
        {
            m.Map(x => x.Street, "Street");
            m.Map(x => x.State, "State");
            // more here
        });

干杯

于 2010-02-25T14:12:35.250 回答
0

问题是您的数据库模式不代表 Person 和 Address 之间的“有一个”关系。它代表“有很多”关系;您可能人为地将其限制为每个人一个地址,但这并不能改变模型是每个人多个地址的事实。

要获得“有一个”关系,您可以将 AddressID 放在 PersonTable 上。

于 2010-02-25T13:07:08.620 回答