¿Cómo es posible establecer algunos valores de columna especiales cuando las entidades de actualización/inserción via NHibernate sin extender las clases de dominio con propiedades especiales?Implementación de NHternate IInterceptor (agregue propiedades a la tabla DB que la clase de dominio original no tiene)
Por ejemplo: en mi caso me gustaría obtener un objeto y justo antes de actualizar/insertar db agregue a ese objeto información adicional (como identificación de usuario o nombre de computadora) usando IInterceptor. En otras palabras, me gustaría agregar algunas columnas a DB Table sin especificar nuevas propiedades en la clase del objeto original. ¿Tengo que configurar/cambiar/agregar a mi Object.hbm.xml
o App.config en ese caso?
El problema es que no puedo cambiar mis objetos originales y clases base. Así que tengo que averiguar si es posible agregar información a la tabla DB sin cambiar los objetos originales (incluso sin heredar de ninguna clase base)
Ejemplo:
objeto original tiene: FirstName ,LastName,Birthday,Address properties
Customer.hbm.xml
tiene:
<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" />
Mi clase interceptor tiene método:
public bool OnSave(object entity, object id, object[] state, string[] propertyNames, NHibernate.Type.IType[] types)
en ese momento o incluso tal vez antes de guardar tengo que añadir a la tabla de clientes DB 2 columnas adicionales (nombre del equipo y nombre de usuario, por ejemplo) que propertyNames[]
y state[]
parámetros don' t tenerlos desde el principio, por lo que debe hacerse sobre la marcha.
MY DB Customer table tiene todas las columnas que he descrito anteriormente.
Gracias.