2010-01-05 2 views
2

J'apprends NHibernate et j'espère que vous pourrez m'aider un peu à propos de la conception et des solutions de Cloud Tag.Comment créer un système de marquage avec NHibernate (plusieurs à plusieurs)

J'ai 3 tables qui sont "News", "Tags" et "News_Tags" avec une relation Many-To-Many et les "News_Tags" est la table de liens.

Options:

  1. cascade = "all", cascade = "all-delete-orphan" Si je supprime un des enregistrements de nouvelles, plus il supprimera tous mes dossiers de nouvelles qui ont la mêmes balises.

  2. cascade = « save-update » Il fonctionne avec enregistrer et mettre à jour, mais si je tente de supprimer nouvelles, il donnera l'erreur: objet supprimé serait réenregistrés par cascade (supprimer objet supprimé des associations)

Voici mes applications:

Balises:

<class name="Tag" table="Tags" lazy="false"> 
    <id name="TagID"> 
    <generator class="identity" /> 
    </id> 
    <property name="TagName" type="String"></property> 
    <property name="DateCreated" type="DateTime"></property> 

    <!--inverse="true" has been defined in the "News mapping"--> 
    <set name="NewsList" table="New_Tags" lazy="false" cascade="all"> 
    <key column="TagID" /> 
    <many-to-many class="New" column="NewID" /> 
    </set> 
</class> 

News:

<class name="New" table="News" lazy="false"> 
<id name="NewID"> 
    <generator class="identity" /> 
</id> 
<property name="Title" type="String"></property> 
<property name="Description" type="String"></property> 

<set name="TagsList" table="New_Tags" lazy="false" inverse="true" cascade="all"> 
    <key column="NewID" /> 
    <many-to-many class="Tag" column="TagID" /> 
</set> 
</class> 

Quelqu'un peut-il fournir des solutions pour cela? @Lck mentionné je pourrais le faire manuellement, quelqu'un peut-il fournir un échantillon de code pour moi? Merci beaucoup.

Répondre

0

Jetez un oeil à cette réponse que j'ai donné un certain temps il y a:

What is the correct way to define many-to-many relationships in NHibernate to allow deletes but avoiding duplicate records

Il ne répond pas à votre quesiton directement, mais à travers sa solution extrême et les commentaires qu'il par vous comprendre ce qui doit être fait pour atteindre exactement ce dont vous avez besoin.

+0

J'ai passé 3 nuits là-dessus et presque abandonné. Je mets l'inverse = "true" dans un mauvais fichier de mapping. Merci beaucoup. Avez-vous écrit des blogs ou des articles afin que je puisse les suivre. :) –

+0

Vous êtes les bienvenus. Je n'ai pas de blog en ce moment mais je travaille dessus ;-) – tolism7

0

Avec cascade="all", la suppression d'un objet News devrait simplement supprimer toutes les lignes correspondantes dans la table New_Tags, n'est-ce pas? Je ne pense pas que cela supprimerait tous les éléments News qui sont marqués de cette façon. Est-ce que ce n'est pas le comportement que vous voulez?

Questions connexes