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