我有以下域模型要使用ClassMaps / SubclassMaps
进行映射A - HasMany - > B(A应该是表格)
B代码是抽象的(不应该是表格)
C,D,E继承B,并且所有属性都非常不同。它们中的每一个都应该是一个带有A的外键的表。
我得到了我想要的表格,但我看不到如何从实体A中映射HasMany
,其中有一个属性IList<B> SomeProperty
我想在ClassMap<A>
中定义{C},C,D,E上的SomeProperty
级联
这显然不起作用,ClassMap<A>
:
HasMany<C>(x => x.B).Cascade.All();
HasMany<D>(x => x.B).Cascade.All();
HasMany<E>(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
}
在这种情况下,我希望ClassMap<Person>
在抽象类Animal上映射到Cat和Horse。
答案 0 :(得分:0)
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
}