Мне нужно заполнить сущность из представления БД (без возможности вставки) и выполнить все обновления сущностей в обновляемой таблице БД.
- Отображение объекта в таблицу и запись пользовательской загрузки SQL из представления не является вариантом, поскольку в некоторых случаях NHibernate все еще пытается выбрать имя таблицы (например, при присоединении к этому объекту).
- Отображение сущности для просмотра и записи пользовательских запросов на изменение данных не вариант, так как я не могу написать оператор SQL-вставки для разных баз данных (из-за последней вставленной части выбора значения идентификатора).
Единственная идея, которую я выдвинул на данный момент, - это изменение сгенерированных операторов SQL на лету. Мне удалось сделать это с помощью специального перехватчика, но я не думаю, что это хорошая идея (так как я перехватываю каждый запрос, даже для других объектов). Тем не менее, я думаю, что можно изменить только необходимые запросы, используя пользовательские IEntityPersister
. Я создал один на основе SingleTableEntityPersister
, указал его в <class persister="…">
, но NHibernate даже не хочет создавать его экземпляр.
Есть ли примеры написания пользовательских сущностей, сохраняемых для NHibernate?