使用Fluent NHibernate ReferencesAny映射非多态关联

Owe*_*ing 6 c# nhibernate fluent-nhibernate polymorphic-associations

假设我们有两个类,每个类实现一个接口,IParent,如下所示:

public class Foo : IParent
{
    public long Id { get; set; }
    ...
    public IList<Child> Children { get; set; }
    ...
}
public class Bar : IParent
{
    public long Id { get; set; }
    ...
    public IList<Child> Children { get; set; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

并且具有IParent类型的父属性的子类,即父类可以是Foo或Bar:

public class Child
{
    public long Id { get; set; }
    ...
    public IParent Parent { get; set; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

如何使用FluentNHibernate映射此Parent属性?

我发现这个问题似乎有类似的要求,但没有涉及接口.答案对我来说没有意义,或者在这种情况下似乎适用.

我尝试使用ReferencesAny如下实现映射:

public class ChildMap : ClassMap<Child>
{
    public ChildMap()
    {
        Table("children");
        Id(x => x.Id).GeneratedBy.Assigned();
        ...
        ReferencesAny(x => x.Parent)
            .AddMetaValue<Foo>(typeof(Foo).Name)
            .AddMetaValue<Bar>(typeof(Bar).Name)
            .EntityTypeColumn("parent_name")
            .EntityIdentifierColumn("parent_id")
            .IdentityType<long>()
            .LazyLoad();
    }
}
Run Code Online (Sandbox Code Playgroud)

这在保存时不会导致任何错误,但是没有数据写入数据库中的子表,这使我相信我已经错误地实现了映射.