Пользовательская сущность NHibernate сохраняется для изменения сгенерированных операторов SQL - PullRequest
2 голосов
/ 02 ноября 2010

Мне нужно заполнить сущность из представления БД (без возможности вставки) и выполнить все обновления сущностей в обновляемой таблице БД.

  1. Отображение объекта в таблицу и запись пользовательской загрузки SQL из представления не является вариантом, поскольку в некоторых случаях NHibernate все еще пытается выбрать имя таблицы (например, при присоединении к этому объекту).
  2. Отображение сущности для просмотра и записи пользовательских запросов на изменение данных не вариант, так как я не могу написать оператор SQL-вставки для разных баз данных (из-за последней вставленной части выбора значения идентификатора).

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

Есть ли примеры написания пользовательских сущностей, сохраняемых для NHibernate?

...