Как можно установить некоторые специальные значения столбца при обновлении/вставке объектов через NHibernate без расширения классов домена со специальными свойствами?Реализация NHibernate IInterceptor (добавить свойства к таблице DB, которой не принадлежит исходный класс домена)
Например: в моем случае я хотел бы получить объект и всего лишь мгновение перед обновлением/вставкой db добавить к этому объекту некоторую дополнительную информацию (например, идентификатор пользователя или имя компьютера) с помощью IInterceptor. Другими словами, я хотел бы добавить несколько столбцов в таблицу DB без указания новых свойств в классе исходного объекта. Должен ли я настраивать/изменять/добавлять к моему Object.hbm.xml
или App.config в этом случае?
Проблема заключается в том, что я не могу изменить свои исходные объекты и базовые классы. Поэтому мне нужно выяснить, возможно ли добавлять информацию в таблицу БД без изменения исходных объектов (даже без наследования от каких-либо базовых классов)
Пример:
исходного объекта имеет: FirstName ,LastName,Birthday,Address properties
Customer.hbm.xml
имеет:
<property name="FirstName" column="FirstName" type="string" not-null="true" length="64" />
<property name="LastName" column="LastName" type="string" not-null="true" length="64" />
<property name="Birthday" column="Birthday" type="DateTime" not-null="true" />
<property name="Address" column="Address" type="string" not-null="true" />
Мой класс перехватчик имеет метод:
public bool OnSave(object entity, object id, object[] state, string[] propertyNames, NHibernate.Type.IType[] types)
в тот момент, или даже, возможно, прежде чем сохранить я должен добавить в таблицу Customer БД дополнительные 2 колонки (Имя компьютера и имя пользователя, например), что propertyNames[]
и state[]
параметры Дон» t иметь их с самого начала, так что это должно выполняться «на лету».
Таблица MY DB Customer имеет все столбцы, которые я описал выше.
спасибо.