Эта статья погрузит Вас в тонкие материи работы с NHibernate, а именно mapping иерархии классов в смешанном стиле table-per-subclass + table-per-hierarchy + discriminator.
В стиле table-per-subclass, равно как и table-per-hierarchy, нет ничего особенного, это все довольно стандартные и банальные вещи, если речь идет об отображении иерархии классов. Интересное начинается тогда, когда задача выходит за рамки простых учебных примеров, и нужно, например, совместить эти два стиля в рамках отображения одной иерархии классов. Как раз в этих ситуациях и проявляется истинная мощь NHibernate. Об этом мы сегодня и поговорим.
Попутно будет раскрыт ряд интересных моментов, таких как:
- Что такое implicit polymorphism в NHibernate.
- В чем заключается сложность mapping'a интерфейсов.
- [BONUS] Как в NHibernate вытянуть все данные из БД в рамках одного простого запроса.
- Как выглядит sql запрос, который сгенерирует NHibernate для иерархии классов.
- Использование любого sql-выражения в качестве discriminator, а не только фиксированной колонки.