2009-10-20 133 views
2

我在流利的nHibernate中遇到了一对一的关系问题。流利的NHibernate一对一关系?

我有AdventureWorks2008数据库中的以下关系表。

BusinessEntity (Table) 
    BusinessEntityId Int (PK, Identity) 

Person (Table) 
    BusinessEntityId int (PK, Reference with BusinessEntity table) 
    FullName varchar(255) 

BusinessEntity表与Person表之间的关系是一对一的关系。

如何在Person表中不需要任何额外字段(如“Id”)进行流畅映射?

对于Person和BusinessEntity应该有两个一类,或者是适当的模型来最好地描述上述关系。

谢谢, Ashraf。

+0

你的模型类是如何设置的? – 2009-10-20 23:52:03

+0

应该有两个一级的Person和另一个BusinessEntity。或适当的模型。示例 public class Person {public virtual BusinessEntity BusinessEntity {get;组; }公共虚拟字符串描述{get;组; }} – ashraf 2009-10-21 00:06:02

回答

4

意味着你的Person的映射是非常标准的,你这样做的方式是说:

Id(x => x.BusinessEntityId) 
    .GeneratedBy.Foreign("BusinessEntity"); 

在Person类。

这假定您的Person类具有名为BusinessEntity的属性,该属性的类型为BusinessEntity。

您还需要将BusinessEntity映射到具有约束设置为真的人(以说他们的主键是对BusinessEntity的外键引用)。

关键是GeneratedBy.Foreign()表示您的身份是由另一个类的链接生成的。