ClassMap для потомков абстрактного класса - PullRequest
0 голосов
/ 19 января 2012

У меня есть следующая модель домена для сопоставления с использованием ClassMaps / SubclassMaps

A - HasMany -> B (A должно быть таблицей)

B абстрактно в коде (и не должно быть таблицей)

C, D, E наследуют B и все имеют очень разные свойства. У каждого из них должна быть таблица с внешним ключом А.

Я получаю нужные мне таблицы, но не вижу, как отобразить HasMany из объекта A, у которого есть одно свойство IList<B> SomeProperty

Я хотел бы определить в ClassMap<A>, что SomeProperty каскады на C, D, E

Это явно не работает, в 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> отобразить на Cat and Horse более абстрактный класс Animal.

1 Ответ

0 голосов
/ 02 февраля 2012
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
}
...