C# 简单FluentNHibernate父/子映射

C# 简单FluentNHibernate父/子映射,c#,configuration,fluent-nhibernate,mapping,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 vir

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; }
}
子地图的注释区域是我目前遇到的问题。我希望能够创建一个子对象并调用它的父对象(即someChild.ActiveParent),但我不确定如何通过fluent接口映射它


子表的表结构包含一个parentid,目的是在调用时延迟加载父对象。非常感谢您提供的任何帮助。

除了mxmissile的答案之外,您还需要在
References()
调用的末尾添加一个
LazyLoad()
,并且您可能需要在配置中执行以下操作:

References(x => x.Parent);
.Mappings(m =>
    m.FluentMappings.AddFromAssemblyOf<ParentMap>()
        .ConventionDiscovery.Add(ForeignKey.EndsWith("ID")))
.Mappings(m=>
m、 FluentMappings.AddFromAssemblyOf()的
.ConventionDiscovery.Add(ForeignKey.EndsWith(“ID”))

最后一行指示Fluent NHibernate使用名为
ParentID
的外键,而不是默认的(
Parent\u Id
?),因此您不再需要在每个关系映射中明确指定列名。

Ah,感谢您在配置方面的进一步说明。我对列映射的“魔力”有点一无所知。Fluent NHibernate还有一些其他约定,如果需要,您可以更改/调整。详情如下:
.Mappings(m =>
    m.FluentMappings.AddFromAssemblyOf<ParentMap>()
        .ConventionDiscovery.Add(ForeignKey.EndsWith("ID")))