我有一个人课,然后有一个家庭班,我有一个属性父亲和财产类型的母亲。
我有一个Person数据库表和一个包含FamilyId,FatherId,MotherId的Family表,其中FatherId和MotherId是PersonId in Person表的外键。
你将如何在NHibernate中映射它?
答案 0 :(得分:2)
此映射表示您的表格。
public class Family
{
public virtual int Id { get; set; }
public virtual Person Mother { get; set; }
public virtual Person Father { get; set; }
}
<class name="Family">
<id name="Id" column="FamilyId">
<generator class="native" />
</id>
<many-to-one name="Mother" column="MotherId" />
<many-to-one name="Father" column="FatherId" />
</class>
答案 1 :(得分:1)
也许你在给定的环境中有充分的理由进行设计。
从理论上讲,你通常会采用更松散耦合,灵活,基于角色的设计。
我的意思是说一个人是一个“派对”,父亲和母亲是一个人可以玩的“角色”(“派对”的其他角色可能是员工,顾客,朋友等等)
我个人喜欢Peter Coad的DNC模式,以解决这个特殊的设计问题。可在此处找到一篇文章:http://edn.embarcadero.com/article/32543
几年前,我在一个大型ERP系统上工作,我在C#+ NHibernate环境中引入了DNC,所以我知道它在实践中也有用; - )
要深入分析角色模式/原型,请查看书籍Enterprise patterns and MDA: building better software with archetype patterns and UML。
为了在语言层面解决这个问题,还在进行研究,而不是使用称为DCI的模式:http://www.artima.com/articles/dci_visionP.html