Свободное наследование Nhibernate AutoMapping и игнорирование абстрактного свойства - PullRequest
2 голосов
/ 26 января 2011

У меня есть структура наследования, которую я успешно отобразил

Продукт (база)

PdfProduct (наследуется от Product) и OtherProduct (наследуется от Product)

Они работают нормально, и раньше я делал нечто похожее на файлы hmb.xml.

В предыдущем проекте у меня была проблема, когда я пытался выяснить, какой тип продукта, но я не мог сделать это, так как это был прокси (продукт - PdfProdcut).

Чтобы решить эту проблему, я добавил абстрактное свойство к базовому продукту и переопределил его в других классах, возвращая перечислитель.

Когда я делал это с отображениями xml, я просто не отображал столбец Type, и все было хорошо.

Теперь я пытаюсь автоматически отобразить унаследованное отношение, оно автоматически сопоставляет абстрактное свойство с дочерними классами, но это не требуется, поскольку его нет в базе данных.

Любые идеи, как я говорю это игнорировать их? поскольку дочерние отношения не получают сгенерированное отображение, я не уверен, куда поместить оператор игнорирования.

Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 26 января 2011

В Fluent NHibernate есть метод игнорирования, который можно использовать в настройке:

.ForTypesThatDeriveFrom<Product>(p => p.IgnoreProperty(x => x.Type))

Кстати, мы решили эту проблему, добавив свойство Self в базовый класс. Это свойство всегда будет возвращать правильный (не прокси) тип:

    public virtual Product Self
    {
        get { return this; }
    }
...