Вы можете иметь иерархические структуры данных, обрабатываемые NHibernate. С точки зрения базы данных, шаблон Decorator - это просто иерархическая структура, в которой имеется только один дочерний узел, а не коллекция. Здесь есть некоторая вводная информация .
Таким образом, вы можете довольно легко отобразить подклассы той же иерархии, используя подход «таблица на иерархию классов», где каждый Декоратор становится строкой в таблице и указывает на Внутренний Декоратор. В вашей таблице вы используете столбец дискриминатора, поэтому при извлечении из базы данных NHibernate знает, какой тип класса ему нужно создать. Очевидно, что «код», который реализует конкретное поведение, связанное с каждым Decorator, не будет жить в базе данных.