Beaucoup à beaucoup suppriment la cascade dans NHibernate

J'ai un scénario dans un système que j'ai essayé de simplifier mieux que je peux. Nous avons une table de (permet de l'appeler) les artefacts, les objets peuvent être consultés par n'importe quel nombre de rôles de sécurité et les rôles de sécurité peut accéder à n'importe quel nombre d'objets. En tant que tel, nous avons 3 tables dans la base de données - un pour la description des artefacts, l'un décrivant les rôles et les plusieurs-à-plusieurs table d'association reliant artefact ID ID de Rôle.

Domaine sage, nous avons deux classes: l'une pour un rôle et une pour un artefact. l'objet de la classe a un IList propriété qui renvoie une liste de rôles qui peuvent y accéder. (Rôles, toutefois, ne pas offrir une propriété afin d'obtenir des objets qui peuvent être accessibles).

En tant que tel, le nhibernate pour la cartographie de l'artefact contient les éléments suivants;

<bag name="AccessRoles" table="ArtefactAccess" order-by="RoleID" 
    lazy="true" access="field.camelcase-underscore" optimistic-lock="false">
    <key column="ArtefactID"/>
    <many-to-many class="Role" column="RoleID"/>
</bag>

Tout cela fonctionne très bien et si je supprime un artefact, l'association de la table est nettoyée de façon appropriée et toutes les références entre l'retiré de l'artefact et les rôles sont supprimés (le rôle n'est pas supprimé si, correctement - comme nous ne voulons pas orphelins supprimé).

Le problème est comment faire pour supprimer un rôle et ont clairement l'association tableau automatiquement. Si j'ai actuellement essayez de supprimer un rôle, je reçois une référence de contrainte comme il y a encore entrées dans la table d'association pour le rôle. La seule façon de réussir à supprimer un rôle est d'effectuer des requêtes pour tous les objets de lien pour ce rôle, de supprimer le rôle de l'artefact du rôle de collecte, de mise à jour de l'objet et ensuite supprimer le rôle n'est pas très efficace ou agréable, surtout lorsque l'onu-système simplifié, les rôles peuvent être associés à un certain nombre d'autres tableaux/objets.

J'ai besoin d'être en mesure de faire allusion à NHibernate que je veux cette table d'association effacé à chaque fois que je supprime un rôle - est-ce possible, et si oui, comment puis - je le faire?

Merci pour toute aide.

source d'informationauteur deepcode.co.uk