2010-06-22 5 views
0

en examinant une implémentation NHibernate existante qui mappe une seule classe à deux tables de base de données jointes. La fonctionnalité actuelle est en lecture seule. La jointure de la table est en réalité cachée via une vue en lecture seule et c'est la vue référencée dans le mapping NHibernate. Fonctionne bien pour le comportement en lecture seule. Sauf que j'ai besoin d'ajouter le comportement Insérer, Mettre à jour, Supprimer et qu'une seule des tables doit être insérée/mise à jour/supprimée. Comment faire mieux? Je ne peux pas lire en lecture seule bien sûr, je pourrais répliquer la jointure dans le mappage NHibernate, mais comment dire à NHibernate que insert/update/delete affecte une seule table?Mappage de classe unique à deux tables jointes

Merci DC

Répondre

0

Vous pouvez mapper une vue au lieu d'une table, puis définissez sql sur mesure pour vos insertions, mises à jour et les suppressions. Je recommanderais d'appeler une procédure stockée.

Voir les docs: http://nhibernate.info/doc/nh/en/index.html#querysql-cud

J'ai utilisé cette technique beaucoup et cela fonctionne très bien.

0

Vous pouvez définir la mise à jour et insérer des attributs sur le property mappings false et ils seront exclus des mises à jour et inserts:

<property name="MyProperty" update="false" insert="false" /> 

Gardez à l'esprit que votre point de vue aura besoin d'avoir une seule clé primaire définie activer les mises à jour ou les insertions.

Questions connexes