基本问题:如何在 Fluent NHibernate 中创建双向一对多映射?
细节:
我有一个有很多孩子的父对象。在我的情况下,孩子没有父母是没有意义的,所以在数据库中,我希望父母的外键有 NOT NULL 约束。我正在从 Fluent NHibernate 映射自动生成我的数据库。
我有一个父母有很多像这样的子对象:
public class Summary
{
public int id {get; protected set;}
public IList<Detail> Details {get; protected set;}
}
public class Detail
{
public int id {get; protected set;}
public string ItemName {get; set;}
/* public Summary Owner {get; protected set;} */ //I think this might be needed for bidirectional mapping?
}
这是我开始的映射:
public class SummaryMap : ClassMap<Summary>
{
public SummaryMap()
{
Id(x => x.ID);
HasMany<Detail>(x => x.Details);
}
}
public class DetailMap : ClassMap<Detail>
{
public DetailMap()
{
Id(x => x.ID);
Map(x => x.ItemName).CanNotBeNull();
}
}
在 Detail 表中,Summary_id 应该为 Not Null,因为在我的情况下,没有附加到摘要对象的 Detail 对象是没有意义的。但是,仅使用 HasMany() 映射会使 Summary_id 外键为空。
我在 NHibernate 文档(http://www.hibernate.org/hib_docs/nhibernate/html/collections.html)中发现“如果需要父级,请使用双向一对多关联”。
那么如何在 Fluent NHibernate 中创建双向一对多映射呢?