Hi John,

I tried using SaveOrUpdate instead of Update.

Also I missed one thing. While creating the session factory, I am adding
more than one assembly to the configuration object.

*Code sample*
**

files = Directory.GetFiles(src, "*Entities.dll");

foreach (string file in files)

{

        Assembly assembly;

        assembly = Assembly.LoadFrom(file);

        configuration.AddAssembly(assembly);

}

Will this be the reason for the above said issue?

Regards,
Deepraj D

On Wed, Jun 2, 2010 at 4:56 PM, John Davidson <[email protected]> wrote:

> Try using SaveOrUpdate instead of just Update
>
> John Davidson
>
>   On Wed, Jun 2, 2010 at 4:34 AM, Deepraj <[email protected]> wrote:
>
>>  HI All,
>>
>> When I try to update the entity using NHibernate, I am getting the
>> error as follows
>>
>> "Illegal attempt to associate a collection with two open sessions"
>>
>> Find below the stack trace
>>
>>   at
>>
>> NHibernate.Collection.AbstractPersistentCollection.SetCurrentSession(ISessionImplementor
>> session)
>>   at NHibernate.Event.Default.OnLockVisitor.ProcessCollection(Object
>> collection, CollectionType type)
>>   at NHibernate.Event.Default.AbstractVisitor.ProcessValue(Object
>> value, IType type)
>>   at NHibernate.Event.Default.AbstractVisitor.ProcessValue(Int32 i,
>> Object[] values, IType[] types)
>>   at
>>
>> NHibernate.Event.Default.AbstractVisitor.ProcessEntityPropertyValues(Object[]
>> values, IType[] types)
>>   at NHibernate.Event.Default.AbstractVisitor.Process(Object obj,
>> IEntityPersister persister)
>>   at
>>
>> NHibernate.Event.Default.AbstractReassociateEventListener.Reassociate(AbstractEvent
>> event, Object entity, Object id, IEntityPersister persister)
>>   at
>>
>> NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.PerformUpdate(SaveOrUpdateEvent
>> event, Object entity, IEntityPersister persister)
>>   at
>>
>> NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsDetached(SaveOrUpdateEvent
>> event)
>>   at
>>
>> NHibernate.Event.Default.DefaultUpdateEventListener.PerformSaveOrUpdate(SaveOrUpdateEvent
>> event)
>>   at
>>
>> NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent
>> event)
>>   at NHibernate.Impl.SessionImpl.FireUpdate(SaveOrUpdateEvent event)
>>   at NHibernate.Impl.SessionImpl.Update(Object obj)
>>   at CS3Repository.PreRegHeaderRepository.EditPreRegHeader(ISession
>> session, PreRegHeader PreRegHeaderToUpdate) in E:\generate
>> \PersistentClasses\Temp\CS3Entities\Repository
>> \PreRegHeaderRepository.cs:line 153
>>   at
>> RegEvntServiceBase.RegEvntServiceBase.EditPreRegHeader(PreRegHeader
>> PreRegHeaderToEdit) in E:\generate\PersistentClasses\Temp\RegEvnt
>> \RegEvntService\RegEvntServiceBase.cs:line 102
>>
>>
>> Given below is my code
>>
>> I am opening a session like this
>>
>> ISession session = nHibernateHelper.OpenSession();
>>
>> Inside nHibernateHelper, a static variable is used to create the
>> session factory and each time not null value is checked inorder to
>> create a new session factory.
>>
>> private static ISessionFactory _sessionFactory;
>>
>> public static ISessionFactory SessionFactory
>>        {
>>            get
>>            {
>>                if (_sessionFactory == null)
>>                {
>>                    Configuration configuration = new Configuration();
>>                    configuration.Configure();
>>                    ...................
>>                }
>>             }
>>          }
>>
>>
>> After creating the session, a call is made to open a transaction
>> and then the update statement is executed like
>>
>> session.Update(...);
>>
>> Also these are the settings in hibernate.config.xml
>>
>> <property
>>
>> name="connection.provider">NHibernate.Connection.DriverConnectionProvider</
>> property>
>>    <property name="dialect">NHibernate.Dialect.MsSql2000Dialect</
>> property>
>>    <property
>> name="connection.driver_class">NHibernate.Driver.SqlClientDriver</
>> property>
>>    <property
>> name="connection.connection_string">Server=DevServer;initial
>> catalog=SportsDB;Trusted_Connection=True</property>
>>    <property name="show_sql">false</property>
>>    <property
>>
>> name='proxyfactory.factory_class'>NHibernate.ByteCode.Castle.ProxyFactoryFactory,
>> NHibernate.ByteCode.Castle</property>
>>    <property  name="current_session_context_class">web</property>
>>    <property name='adonet.batch_size'>20</property>
>>    <property
>> name='cache.provider_class'>NHibernate.Cache.HashtableCacheProvider</
>> property>
>>    <property name='cache.use_query_cache'>true</property>
>>    <property name='default_schema'>SportsDB.dbo</property>
>>    <property name='connection.isolation'>ReadCommitted</property>
>>
>> Also note that cascade = All is given the mapping files..
>>
>> <set name="PreRegVols" cascade="all" lazy="true" inverse="true"  batch-
>> size="4">
>>  <...>
>> </set>
>>
>> On seeing a post I removed cascade ="all" from the set tag, but the
>> result is same.
>>
>> Please help me on this. This is urgent.
>>
>> Thanks in advance,
>>
>> Deepraj D
>>
>> --
>> 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.
>>
>>
> --
> 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.
>

-- 
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