Fluent nhibernate 类映射到抽象类的子类

Fluent nhibernate 类映射到抽象类的子类,fluent-nhibernate,nhibernate-mapping,Fluent Nhibernate,Nhibernate Mapping,我使用类映射/子类映射映射以下域模型 A-HasMany->B(A应该是表格) B在代码中是抽象的(不应该是表) C、 D,E继承了B,并且都有非常不同的属性。每个表都应该是一个表,外键为a 我得到了我想要的表,但是我看不到如何从具有一个属性的实体A映射HasMany 我想在ClassMap中定义SomeProperty级联在C、D、E上 这显然不起作用,在ClassMap中: HasMany(x=>x.B).Cascade.All() HasMany(x=>x.B).Cascade.All()

我使用类映射/子类映射映射以下域模型

A-HasMany->B(A应该是表格)

B在代码中是抽象的(不应该是表)

C、 D,E继承了B,并且都有非常不同的属性。每个表都应该是一个表,外键为a

我得到了我想要的表,但是我看不到如何从具有一个属性的实体A映射
HasMany

我想在
ClassMap
中定义
SomeProperty
级联在C、D、E上

这显然不起作用,在
ClassMap
中:

HasMany(x=>x.B).Cascade.All()

HasMany(x=>x.B).Cascade.All()

HasMany(x=>x.B).Cascade.All()

因为我不能复制B

例如:

public class Person
{
   public virtual IList<Animal> Animals { get; set; }

  public void AddAnimal(Animal animal)
  {
     Animals.Add(animal);
  }
}

public abstract class Animal
{
//some common properties
}

public class Cat : Animal
{
//some cat properties
}
public class Horse : Animal
{
//some horse properties
}
公共类人物
{
公共虚拟IList动物{get;set;}
公共动物(动物)
{
动物。添加(动物);
}
}
公共抽象类动物
{
//一些共同特性
}
公猫:动物
{
//猫的一些特性
}
公共级马:动物
{
//一些马的财产
}

在本例中,我希望
ClassMap
映射到抽象类Animal之上的Cat和Horse。

似乎nhibernate不支持这种边缘情况。您是对的,我的示例中缺少代码,但它仍然无法工作,因为Animal希望拥有自己的类映射(我不想要)。我有一个解决方案,所有“动物”的子类都映射到“人”,直到出现更好的东西。
Try...

public void AddAnimal(Animal animal)
{
    animal.Person = this; //Recomended 
    Animals.Add(animal);
}


public abstract class Animal
{
     public virtual Person Person {get;set;} //Recomended Addition
//some common properties
}