J'ai une table Utilisateurs et une table Réseaux avec une relation de plusieurs à plusieurs entre elles (un utilisateur peut être long à plusieurs réseaux et un réseau peut contenir plusieurs utilisateurs). La relation multiple est contenue dans une table "UserNetworks" qui comporte simplement deux colonnes, UserId et NetworkId.
Mes cours ressemblent à ça :
public class User
{
public IList<Network> Networks {get; set;}
}
public class Network
{
public IList<Usre> Users {get; set;}
}
Les mappings NHibernate pour ces collections many-to-many ressemblent à ceci :
Utilisateur.hbm.xml :
<bag name="Networks" table="UserNetworks" cascade="save-update" inverse="true">
<key column="UserId" />
<many-to-many class="Network" column="NetworkId" />
</bag>
Réseau.hbm.xml :
<bag name="Users" table="UserNetworks" cascade="save-update">
<key column="NetworkId" />
<many-to-many class="User" column="UserId" />
</bag>
Dans mon code, je crée une association entre un utilisateur et un réseau comme suit :
user.Networks.Add(network);
network.Users.Add(user);
Je m'attendrais à ce que l'exécution SQL effectue simplement un INSERT dans la table UserNetworks. Au lieu de cela, elle exécute un DELETE dans la table UserNetworks avec NetworkID = X, puis réinsère toutes les lignes de UserNetworks avec la nouvelle association.
Qu'est-ce que je fais de mal ?