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.


Reply via email to