Nhibernate 如何将类a中的集合和属性映射到类B/C中的单个属性

Nhibernate 如何将类a中的集合和属性映射到类B/C中的单个属性,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我有3个类,我正试图用fluent nHibernate绘制它们,但我遇到了麻烦。我在类a中有一个集合,它引用了类B,B也引用了a,所以这是一个多对一的关系。我的问题是A也有对C的引用(扩展了B),因为它已经有了对A的引用(通过B),我不想创建一个新的属性来建立A和C之间的一对多关系。这是可能的还是我必须在C中创建第二个属性 public class A { public virtual IList<B> AllBInstances { get; set; } public vir

我有3个类,我正试图用fluent nHibernate绘制它们,但我遇到了麻烦。我在类a中有一个集合,它引用了类B,B也引用了a,所以这是一个多对一的关系。我的问题是A也有对C的引用(扩展了B),因为它已经有了对A的引用(通过B),我不想创建一个新的属性来建立A和C之间的一对多关系。这是可能的还是我必须在C中创建第二个属性

public class A
{
  public virtual IList<B> AllBInstances { get; set; }

  public virtual C ActiveC { get; set; }
} 

public class B
{
  public virtual A Parent { get; set; }
}

public class C : B
{}

对于给定的示例,这里是映射

class AMap : ClassMap<A>
{
    public AMap()
    {
        Id(x => x.Id);

        HasMany(x => x.AllBInstances)
            .KeyColumn("A_id")
            .Cascade.All();

        References(x => x.ActiveC);
    }
}

class BMap : ClassMap<B>
{
    public BMap()
    {
        Id(x => x.Id);

        References(x => x.Parent, "A_id");
    }
}

class CMap : SubclassMap<C>
{
    public CMap()
    {
    }
}
table "A" (
    Id  integer,
   ActiveC_id INTEGER,
   primary key (Id)
)

table "B" (
    Id  integer,
   A_id INTEGER,
   primary key (Id)
)

table "C" (
    B_id INTEGER not null,
   primary key (B_id)
)