Как отобразить коллекцию абстрактных классов в nhibernate


Я читал Nhibernate в действии, но раздел о картировании полиморфных коллекций немного коротковат о том, как это сделать.

У меня есть следующий код

[Class]
[Discriminator(Column="MachineType",TypeType=typeof(string))]
public abstract class Machine
{
  [Property]
  public string Name{get;set;}
}

[Subclass(DiscriminatorValue="Heavy",ExtendsType=typeof(Machine))]
public class HeavyMachine : Machine
{
  [Property]
  public int Weight { get; set; }
}

[Subclass(DiscriminatorValue="Fast",ExtendsType=typeof(Machine))]
public class FastMachine : Machine
{
  [Property]
  public float Speed { get; set; }
}

[Class]
public class Module
{
    List<Machine> machines = new List<Machine>();

    [Bag(Name = "Machines", Cascade = "all", Lazy = false, Inverse=true)]
    [Key(1, Column = "Machine")]
    [OneToMany(2, ClassType = typeof(Machine))]
    public IList<Machine> Machines
    {
      get
      {
        return machines.AsReadOnly();
      }
      private set
      {
        machines = value.ToList();
  }
    }
}

С кодом выше я не получаю никаких ошибок, но коллекция машин в модуле остается пустой после восстановления моих объектов из базы данных. Отображение машины (и ее подклассов) действительно кажется нормальным, потому что свойство типа Machine возвращается правильно.

Что NHibernate на.Отображение.Атрибуты мне нужно сопоставить мою коллекцию абстрактных классов?

Thx заранее!

1 2

1 ответ:

Хорошо, я нашел решение. После удаления тега "Inverse=true" из моего отображения IList это сработало.