2010-10-16 5 views
0

Vous cherchez des conseils sur la façon de mettre à jour une collection sur une entité. Dans une application Web, nous avons une liste déroulante multisélect permettant à un utilisateur d'attribuer et de supprimer des entités enfants d'une liste d'entités disponibles. L'utilisateur sélectionne les enfants pertinents à associer au parent. c'est-à-dire un produit avec plusieurs catégories auxquelles il pourrait appartenir. Une fois que l'utilisateur est satisfait, il soumet et met à jour les entités.Nhibernate Updating - Solutions pour la mise à jour des enfants sur une entité?

Quel est le moyen préféré de mettre à jour (supprimer les enfants supprimés, ajouter de nouveaux enfants) à la collection en tenant compte des performances. Je ne voudrais pas exécuter plusieurs instructions sql pour récupérer chaque enfant et l'ajouter au parent.

Vive

Mappages Ci-joint:

public class ParentMap : EntityMapping<Parent> 
    { 
     public ParentMap() 
     { 
      Map(x => x.Name); 
      HasMany(x => x.Children) 
       .Cascade.AllDeleteOrphan() 
       .Access.LowerCaseField(Prefix.Underscore); 
     } 
    } 

    public class ChildMap : EntityMapping<Child> 
    { 
     public ChildMap() 
     { 
      References(x => x.Parent); 
     } 
    } 

public abstract class EntityMapping<TEntity> : ClassMap<TEntity> where TEntity : EntityBase 
    { 
     protected EntityMapping() 
     { 
      Id(x => x.Id, "Id") 
       .UnsavedValue("00000000-0000-0000-0000-000000000000") 
       .GeneratedBy.GuidComb(); 
      OptimisticLock.Version(); 
      Version(entity => entity.Version); 
     } 
    } 
+0

Pouvez-vous publier vos correspondances? – DanP

+0

Salut Dan. Mappages dans le message original – Chev

Répondre

0

établir une relation en cascade entre les entités parents et enfants et le forcer à agir sur toutes les opérations telles que la mise à jour, suppression, etc. Vous devez définir le comportement en cascade en vous Fichiers de mappage HBM. Pour plus d'informations: http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-mapping

+0

J'ai cascade tous supprimer orphelin sélectionné et il ne supprime jamais - seulement ajouter. – Chev

Questions connexes