Comment est-il possible de définir des valeurs de colonne spéciales lors de la mise à jour/insertion d'entités via NHibernate sans étendre les classes de domaine avec des propriétés spéciales? Par exemple: dans mon cas, je voudrais obtenir un objet et juste un instant avant de mettre à jour/insérer db ajouter à cet objet quelques informations supplémentaires (comme l'ID utilisateur ou le nom de l'ordinateur) en utilisant IInterceptor. En d'autres termes, je voudrais ajouter quelques colonnes à DB Table sans spécifier de nouvelles propriétés dans la classe de l'objet d'origine. Dois-je configurer/modifier/ajouter à mon Object.hbm.xml
ou App.config dans ce cas? Le problème est que je ne peux pas changer mes objets d'origine et mes classes de base.Alors je dois comprendre si possible d'ajouter des informations à la table DB sans changer les objets d'origine (même pas hérité des classes de base)Implémentation de NHibernate IInterceptor (ajouter des propriétés à la table DB que la classe de domaine d'origine n'a pas)
Exemple:
objet original a: FirstName ,LastName,Birthday,Address properties
Customer.hbm.xml
a:
<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" />
Ma classe Interceptor a méthode:
public bool OnSave(object entity, object id, object[] state, string[] propertyNames, NHibernate.Type.IType[] types)
à ce moment-là ou peut-être même avant d'enregistrer, je dois ajouter les colonnes supplémentaires table client DB 2 (Nom de l'ordinateur et le nom de l'utilisateur par exemple) que les paramètres propertyNames[]
et state[]
n » Je les ai depuis le début, donc cela devrait être fait à la volée.
La table MY DB Customer a toutes les colonnes que j'ai décrites ci-dessus.
Merci.