Thanks for your answer, but I thought it was now possible to user ICollection<T> instead of ISet<T> and HashSet<T> instead of the iesi HashedSet<T>(I've been doing it for a while and it worked, until now...) Or did I misunderstood this post from ayende ?
http://ayende.com/Blog/archive/2009/04/23/nhibernate-tidbit-ndash-using-ltsetgt-without-referencing-iesi.collections.aspx Thanks. On 23 déc, 15:56, Fabio Maulo <[email protected]> wrote: > HashSet != ISet. > With .NET4.0 we will have the ISet interface and, perhaps, we can remove the > usage of the wonderful Iesi collection... sig :( > > 2009/12/23 Stephane Farges <[email protected]> > > > > > Hi, > > > I've been using HashSet<T> to map set collections for some time now, > > but I just got the exception below when doing a SaveOrUpdateCopy. In > > this case, a child has been added to the object being saved(actually > > several levels below in the hierarchy of objects), and this child > > contains the HashSet object. > > For now, I resolved the problem by replacing "new HashSet<T>" by "new > > Iesi.Collections.Generic.HashedSet<T>" in the constructor of the new > > child object. > > > Is it a bug ? or am I doing something wrong ? > > > Thanks for your help. > > > System.InvalidCastException: Unable to cast object of type > > 'System.Collections.Generic.HashSet`1 > > [Catalogue.Domain.DescriptionBibliotheque]' to type > > 'Iesi.Collections.ISet'. > > à NHibernate.Type.SetType.Clear(Object collection) dans \src > > \NHibernate\Type\SetType.cs:ligne 70 > > à NHibernate.Type.CollectionType.ReplaceElements(Object original, > > Object target, Object owner, IDictionary copyCache, > > ISessionImplementor session) dans \src\NHibernate\Type > > \CollectionType.cs:ligne 369 > > à NHibernate.Type.CollectionType.Replace(Object original, Object > > target, ISessionImplementor session, Object owner, IDictionary > > copyCache) dans \src\NHibernate\Type\CollectionType.cs:ligne 350 > > à NHibernate.Type.AbstractType.Replace(Object original, Object > > target, ISessionImplementor session, Object owner, IDictionary > > copyCache, ForeignKeyDirection foreignKeyDirection) dans \src > > \NHibernate\Type\AbstractType.cs:ligne 213 > > à NHibernate.Type.TypeFactory.ReplaceAssociations(Object[] > > original, Object[] target, IType[] types, ISessionImplementor session, > > Object owner, IDictionary copyCache, ForeignKeyDirection > > foreignKeyDirection) dans \src\NHibernate\Type\TypeFactory.cs:ligne > > 1140 > > à NHibernate.Event.Default.DefaultMergeEventListener.CopyValues > > (IEntityPersister persister, Object entity, Object target, > > ISessionImplementor source, IDictionary copyCache, ForeignKeyDirection > > foreignKeyDirection) dans \src\NHibernate\Event\Default > > \DefaultMergeEventListener.cs:ligne 370 > > à > > NHibernate.Event.Default.DefaultMergeEventListener.EntityIsTransient > > (MergeEvent event, IDictionary copyCache) dans \src\NHibernate\Event > > \Default\DefaultMergeEventListener.cs:ligne 181 > > à NHibernate.Event.Default.DefaultMergeEventListener.OnMerge > > (MergeEvent event, IDictionary copyCache) dans \src\NHibernate\Event > > \Default\DefaultMergeEventListener.cs:ligne 115 > > à NHibernate.Impl.SessionImpl.FireSaveOrUpdateCopy(IDictionary > > copiedAlready, MergeEvent event) dans \src\NHibernate\Impl > > \SessionImpl.cs:ligne 2660 > > à NHibernate.Impl.SessionImpl.SaveOrUpdateCopy(String entityName, > > Object obj, IDictionary copiedAlready) dans \src\NHibernate\Impl > > \SessionImpl.cs:ligne 973 > > à > > NHibernate.Engine.CascadingAction.SaveUpdateCopyCascadingAction.Cascade > > (IEventSource session, Object child, String entityName, Object > > anything, Boolean isCascadeDeleteEnabled) dans \src\NHibernate\Engine > > \CascadingAction.cs:ligne 298 > > à NHibernate.Engine.Cascade.CascadeToOne(Object child, IType type, > > CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled) > > dans \src\NHibernate\Engine\Cascade.cs:ligne 213 > > à NHibernate.Engine.Cascade.CascadeAssociation(Object child, IType > > type, CascadeStyle style, Object anything, Boolean > > isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne > > 181 > > à NHibernate.Engine.Cascade.CascadeProperty(Object child, IType > > type, CascadeStyle style, Object anything, Boolean > > isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne > > 148 > > à NHibernate.Engine.Cascade.CascadeComponent(Object child, > > IAbstractComponentType componentType, Object anything) dans \src > > \NHibernate\Engine\Cascade.cs:ligne 172 > > à NHibernate.Engine.Cascade.CascadeProperty(Object child, IType > > type, CascadeStyle style, Object anything, Boolean > > isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne > > 153 > > à NHibernate.Engine.Cascade.CascadeCollectionElements(Object child, > > CollectionType collectionType, CascadeStyle style, IType elemType, > > Object anything, Boolean isCascadeDeleteEnabled) dans \src\NHibernate > > \Engine\Cascade.cs:ligne 232 > > à NHibernate.Engine.Cascade.CascadeCollection(Object child, > > CascadeStyle style, Object anything, CollectionType type) dans \src > > \NHibernate\Engine\Cascade.cs:ligne 201 > > à NHibernate.Engine.Cascade.CascadeAssociation(Object child, IType > > type, CascadeStyle style, Object anything, Boolean > > isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne > > 185 > > à NHibernate.Engine.Cascade.CascadeProperty(Object child, IType > > type, CascadeStyle style, Object anything, Boolean > > isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne > > 148 > > à NHibernate.Engine.Cascade.CascadeOn(IEntityPersister persister, > > Object parent, Object anything) dans \src\NHibernate\Engine > > \Cascade.cs:ligne 126 > > à > > NHibernate.Event.Default.AbstractSaveEventListener.CascadeAfterSave > > (IEventSource source, IEntityPersister persister, Object entity, > > Object anything) dans \src\NHibernate\Event\Default > > \AbstractSaveEventListener.cs:ligne 370 > > à > > NHibernate.Event.Default.DefaultMergeEventListener.EntityIsTransient > > (MergeEvent event, IDictionary copyCache) dans \src\NHibernate\Event > > \Default\DefaultMergeEventListener.cs:ligne 180 > > à NHibernate.Event.Default.DefaultMergeEventListener.OnMerge > > (MergeEvent event, IDictionary copyCache) dans \src\NHibernate\Event > > \Default\DefaultMergeEventListener.cs:ligne 115 > > à NHibernate.Impl.SessionImpl.FireSaveOrUpdateCopy(IDictionary > > copiedAlready, MergeEvent event) dans \src\NHibernate\Impl > > \SessionImpl.cs:ligne 2660 > > à NHibernate.Impl.SessionImpl.SaveOrUpdateCopy(String entityName, > > Object obj, IDictionary copiedAlready) dans \src\NHibernate\Impl > > \SessionImpl.cs:ligne 973 > > à > > NHibernate.Engine.CascadingAction.SaveUpdateCopyCascadingAction.Cascade > > (IEventSource session, Object child, String entityName, Object > > anything, Boolean isCascadeDeleteEnabled) dans \src\NHibernate\Engine > > \CascadingAction.cs:ligne 298 > > à NHibernate.Engine.Cascade.CascadeToOne(Object child, IType type, > > CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled) > > dans \src\NHibernate\Engine\Cascade.cs:ligne 213 > > à NHibernate.Engine.Cascade.CascadeAssociation(Object child, IType > > type, CascadeStyle style, Object anything, Boolean > > isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne > > 181 > > à NHibernate.Engine.Cascade.CascadeProperty(Object child, IType > > type, CascadeStyle style, Object anything, Boolean > > isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne > > 148 > > à NHibernate.Engine.Cascade.CascadeCollectionElements(Object child, > > CollectionType collectionType, CascadeStyle style, IType elemType, > > Object anything, Boolean isCascadeDeleteEnabled) dans \src\NHibernate > > \Engine\Cascade.cs:ligne 232 > > à NHibernate.Engine.Cascade.CascadeCollection(Object child, > > CascadeStyle style, Object anything, CollectionType type) dans \src > > \NHibernate\Engine\Cascade.cs:ligne 201 > > à NHibernate.Engine.Cascade.CascadeAssociation(Object child, IType > > type, CascadeStyle style, Object anything, Boolean > > isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne > > 185 > > à NHibernate.Engine.Cascade.CascadeProperty(Object child, IType > > type, CascadeStyle style, Object anything, Boolean > > isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne > > 148 > > à NHibernate.Engine.Cascade.CascadeOn(IEntityPersister persister, > > Object parent, Object anything) dans \src\NHibernate\Engine > > \Cascade.cs:ligne 126 > > à NHibernate.Event.Default.DefaultMergeEventListener.CascadeOnMerge > > (IEventSource source, IEntityPersister persister, Object entity, > > IDictionary copyCache) dans \src\NHibernate\Event\Default > > \DefaultMergeEventListener.cs:ligne 398 > > à > > NHibernate.Event.Default.DefaultMergeEventListener.EntityIsDetached > > (MergeEvent event, IDictionary copyCache) dans \src\NHibernate\Event > > \Default\DefaultMergeEventListener.cs:ligne 263 > > à NHibernate.Event.Default.DefaultMergeEventListener.OnMerge > > (MergeEvent event, IDictionary copyCache) dans \src\NHibernate\Event > > \Default\DefaultMergeEventListener.cs:ligne 118 > > à NHibernate.Event.Default.DefaultMergeEventListener.OnMerge > > (MergeEvent event) dans \src\NHibernate\Event\Default > > \DefaultMergeEventListener.cs:ligne 40 > > à NHibernate.Impl.SessionImpl.FireSaveOrUpdateCopy(MergeEvent > > event) dans \src\NHibernate\Impl\SessionImpl.cs:ligne 2673 > > à NHibernate.Impl.SessionImpl.SaveOrUpdateCopy(Object obj) dans \src > > \NHibernate\Impl\SessionImpl.cs:ligne 2159 > > > -- > > > You received this message because you are subscribed to the Google Groups > > "nhusers" group. > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > > [email protected]<nhusers%[email protected]> > > . > > For more options, visit this group at > >http://groups.google.com/group/nhusers?hl=en. > > -- > Fabio Maulo -- You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/nhusers?hl=en.
