2010-11-07 44 views
0

La question est: comment écrire une convention qui empêche la suppression de la référence d'entité si elle hérite du type Root? J'utilise couramment nhibernate et sa fonctionnalité de cartographie automatique. Activé en cascade supprimer par défaut.Convention de suppression NHibernate en cascade pour les racines agrégées

Tout était vraiment cool jusqu'à ce que je casse enfin la casse lorsque j'ai besoin de supprimer réellement la racine agrégée qui fait référence à une autre. J'ai les racines User et Application. User enregistre Applications. Si c'est enregistré par erreur, il y a un petit intervalle de temps dans lequel User avec le rôle Admin peut le supprimer (je suis un peu sûr que je n'aurai jamais besoin de ces données).

Lorsque User supprime Application, en raison de la suppression en cascade, nhibernate supprime User lui-même (quelle ironie ...).


Je ne suis pas sûr comment spécifier SaveUpdate en cascade pour Application-> Association d'utilisateurs seulement:

alt text


le tour est joué:

m.References(x=>x.RegisteredBy).Cascade.SaveUpdate(); //RegisteredBy.Type==User 

De plus, dit fnh où rechercher les remplacements:

var m=new AutoPersistenceModel(storeCfg); 
m.UseOverridesFromAssembly(assembly); 

Répondre

1

Vous pouvez remplacer le comportement de cascade pour l'association Application-> Utilisateur. Vous devez définir SaveUpdate() au lieu de all-delete-orphelin. Pour ce faire, vous devrez mettre en œuvre IAutomappingOverride<Application>

+0

Je suis un peu confus à nouveau. Ajout de l'image à ma question –

+0

Avez-vous résolu un problème? – Sly