FluentNHibernate = D
新手我有一个父/子课程如下:
public class Parent
{
public virtual int ID { get; private set; }
public virtual string Name { get; set; }
public virtual IList<Child> Children { get; set; }
}
public class Child
{
public virtual int ID { get; private set; }
public virtual string Name { get; set; }
public virtual Parent ActiveParent { get; set; }
}
使用以下映射:
public ParentMap()
{
Id(x => x.ID);
Map(x => x.Name);
HasMany(x => x.Children)
.Inverse();
.Cascade.All();
}
public ChildMap()
{
Id(x => x.ID);
Map(x => x.Name);
//Map(x => x.ActiveParent)
// .Column(ParentID);
}
儿童地图的注释区域是我目前遇到问题的问题。我希望能够创建一个子对象并调用它的'parent(即someChild.ActiveParent),但我不确定如何通过流畅的界面映射它。
子表的表结构包含一个parentid,其目的是在调用时延迟加载父对象。任何帮助总是非常感谢。
答案 0 :(得分:6)
References(x => x.Parent);
答案 1 :(得分:0)
添加到mxmissile的答案,您需要在LazyLoad()
调用的末尾添加References()
,并且您可能还希望在配置中执行以下操作:
.Mappings(m =>
m.FluentMappings.AddFromAssemblyOf<ParentMap>()
.ConventionDiscovery.Add(ForeignKey.EndsWith("ID")))
最后一行指示Fluent NHibernate期望名为ParentID
的外键而不是默认的Parent_Id
?),因此您不再需要在每个关系映射中明确指定列名。< / p>