简单的FluentNHibernate父/子映射

时间:2009-09-04 19:42:53

标签: c# configuration fluent-nhibernate mapping

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,其目的是在调用时延迟加载父对象。任何帮助总是非常感谢。

2 个答案:

答案 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>

相关问题