2010-11-18 4 views
2

Je me demande s'il existe une meilleure façon de gérer les tables de relations dans Nhibernate. Actuellement, lorsque l'utilisateur crée d'abord un je peux simplement appeler. Enregistrer et tout va bien. Mais quand ils le chargent et font des changements, je ne veux pas simplement supprimer tous les enregistrements correspondants et les recréer. Je veux qu'il supprime les enregistrements qui ne sont plus valides et créer ceux qui sont nouveaux et laisser ceux qui sont encore valides et dans la base de données seul.Meilleure façon de gérer la table de relations Nhibernate

Actuellement, je regarde dans la liste et efface ceux qui ne sont plus sélectionnés puis ajoute ceux à la liste qui sont nouveaux. Cela ne semble pas être le meilleur moyen puisque je suis en train de parcourir la liste deux fois. Existe-t-il une solution LINQ one liner?

En fait ce que je fais actuellement:

boucle par A et supprimer ce qui est pas B
boucle par B et ajoutez ce qui est pas dans un

Merci à l'avance.

Répondre

3

Vous ne savez pas exactement ce que sont réellement vos A et B.

Si elles sont des enfants d'une entité racine, vous pouvez utiliser cascade = "all-delete-orphelin". NH supprimera tous les enfants qui ne sont plus dans la liste.

Si vous gérez une liste d'entités racines, vous devez passer par cette activité "Rechercher des éléments ajoutés/Rechercher des éléments supprimés".

var removedItems = oldList.Except(newList); 
var addedItems = newList.Except(oldList); 
Questions connexes