我有一个数据库,它在Person和Address(使用person id)之间建立了一对一的关系。但是,我找不到使用NHibernate制作地图的方法。
我的表格结构如下:
PersonTable PersonId PersonName PersonAge AddressTable PersonId CountryName StreetName StateName
我希望有这样的东西作为最后一堂课:
PersonClass int Id string Name int Age Address HomeAddress AddressClass string Street string Country string State Person Owner
我尝试使用HasOne关系,但我不能将PersonId重用为地址标识符。
谢谢!
编辑:我忘了提到我使用的是FluentNHibernate,因此流畅的映射和XML都可以。
答案 0 :(得分:0)
问题是您的数据库架构不代表Person和Address之间的“Has One”关系。它代表着“有很多”的关系;您可能会人为地将其限制为每人一个地址,但这不会改变模型是每人多个地址的事实。
要获得“Has One”关系,您可以将AddressID放在PersonTable上。
答案 1 :(得分:0)
我是使用Id()创建的.General类映射中的GeneratedBy.Foreign()将其引用到Person的ID并且它有效。
谢谢!
答案 2 :(得分:0)
我会把它映射为Person的一个组件。在人类ClassMap中添加以下内容:
Component(x => x.Address, m =>
{
m.Map(x => x.Street, "Street");
m.Map(x => x.State, "State");
// more here
});
干杯