Как можно установить некоторые специальные значения столбца при обновлении / вставке сущностей через NHibernate без расширения классов домена с помощью специальных свойств?
Например: в моем случае я хотел бы получить объект и за мгновение до обновления / вставки БД добавить к этому объекту некоторую дополнительную информацию (например, идентификатор пользователя или имя компьютера) с помощью IInterceptor. Другими словами, я хотел бы добавить несколько столбцов в таблицу БД без указания новых свойств в классе исходного объекта. Нужно ли в этом случае настраивать / изменять / добавлять мой 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 DB дополнительные 2 столбца (например, Имя компьютера и Имя пользователя), чтобы параметры propertyNames[]
и state[]
не имели их с самого начала, так что это должно быть сделано на лету.
Моя таблица клиентов БД содержит все столбцы, которые я описал выше.
Спасибо.