【发布时间】:2010-09-23 13:31:17
【问题描述】:
基本问题:如何在 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 中创建双向一对多映射?
【问题讨论】:
标签: nhibernate fluent-nhibernate nhibernate-mapping