Несколько уровней наследования с помощью Fluent NHibernate с использованием дискриминаторов

Я нахожусь в завидной ситуации, когда мне приходится интегрироваться с устаревшей базой данных, к счастью для целей «только для чтения», и я решил использовать NHibernate. До сих пор все было отлично, но у меня появилось новое требование, которое заставляет меня чесать затылок.

До сегодняшнего дня у меня был один столбец в таблице, который действовал бы как дискриминатор, но теперь оказалось, что в некоторых случаях мне нужно иметь более одного столбца дискриминатора. Возможно ли это с помощью NHibernate?

Я изучал использование формул, которая работает, но теперь у меня возникла проблема, заключающаяся в том, что мне нужно исключить «неизвестные» подклассы (те, у которых еще нет сопоставления). Например, у меня есть следующее:

DiscriminateSubClassesOnColumn("")
    .Formula("case ... when ... then ... when .. then ... else 'unknown' end");

Я хотел бы иметь возможность отфильтровать все, что «неизвестно» ...

Изменить: Я думаю, что возможным решением было бы использовать AlwaysSelectWithValue () , какие последствия это имеет? Я считаю, что это то же самое, что force в отображении nhibernate xml.

7
задан Guillermo Gutiérrez 14 June 2013 в 17:00
поделиться