(I'm sending my post again because the previous one was not showing after 
some days)

Hello everyone,

I'm making a test method for an application and I'm having trouble getting 
it to work correctly.

In my model, one Case has many Specimen (but one Specimen is associated 
with only one Case).
I'm trying to add one Case with some Specimens to the database and then 
removing the Specimens (but not deleting the Case), but somehow I get 
StaleStateException and I can't figure why.

Case.Specimens is mapped as a One to many collection with inverse="false" 
and cascade="all-delete-orphan". The relationship is bidirectional (i.e. 
each Specimen has a reference to the Case), though I don't think that's 
relevant.

        using (var session = 
DatabaseSetUpFixture.SessionFactory.OpenSession())
            using (var tx = session.BeginTransaction())
            {
                Case original = AddSampleCase(session);
                
                original.Specimens = new List<Specimen>() { 
                    CreateSampleSpecimen()
                };

                session.Flush(); // Save the changes
                session.Clear(); // Evict all entities from the session

                Case newVersion = session.Get<Case>(original.Id); // Get 
the DB version
                newVersion.Specimens.Clear(); // Remove all the specimens

                session.Update(newVersion);
                session.Flush(); // StaleStateException here :S

                // ...
                
                tx.Rollback(); // Leave the test DB untouched
            }
        }

I need to use the same session so I can rollback all the changes made (as 
this is a test method).
If I comment "newVersion.Specimens.Clear();" the test ends normally (but I 
need that line, of course), and I don't understand why (even if I change 
some attributes of the Case)

The stack trace is included below:

en 
NHibernate.AdoNet.Expectations.BasicExpectation.VerifyOutcomeNonBatched(Int32 
rowCount, IDbCommand statement) en 
p:\nhibernate-core\src\NHibernate\AdoNet\Expectations.cs:línea 29
en NHibernate.AdoNet.NonBatchingBatcher.AddToBatch(IExpectation 
expectation) en 
p:\nhibernate-core\src\NHibernate\AdoNet\NonBatchingBatcher.cs:línea 41
en NHibernate.Persister.Entity.AbstractEntityPersister.Delete(Object id, 
Object version, Int32 j, Object obj, SqlCommandInfo sql, 
ISessionImplementor session, Object[] loadedState) en 
p:\nhibernate-core\src\NHibernate\Persister\Entity\AbstractEntityPersister.cs:línea
 
2919
en NHibernate.Persister.Entity.AbstractEntityPersister.Delete(Object id, 
Object version, Object obj, ISessionImplementor session) en 
p:\nhibernate-core\src\NHibernate\Persister\Entity\AbstractEntityPersister.cs:línea
 
3102
en NHibernate.Action.EntityDeleteAction.Execute() en 
p:\nhibernate-core\src\NHibernate\Action\EntityDeleteAction.cs:línea 70
en NHibernate.Engine.ActionQueue.Execute(IExecutable executable) en 
p:\nhibernate-core\src\NHibernate\Engine\ActionQueue.cs:línea 136
en NHibernate.Engine.ActionQueue.ExecuteActions(IList list) en 
p:\nhibernate-core\src\NHibernate\Engine\ActionQueue.cs:línea 126
en NHibernate.Engine.ActionQueue.ExecuteActions() en 
p:\nhibernate-core\src\NHibernate\Engine\ActionQueue.cs:línea 174
en 
NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions(IEventSource
 
session) en 
p:\nhibernate-core\src\NHibernate\Event\Default\AbstractFlushingEventListener.cs:línea
 
249
en NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent 
event) en 
p:\nhibernate-core\src\NHibernate\Event\Default\DefaultFlushEventListener.cs:línea
 
19
en NHibernate.Impl.SessionImpl.Flush() en 
p:\nhibernate-core\src\NHibernate\Impl\SessionImpl.cs:línea 1509

So, what is causing StaleStateException?

Thank you very much

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to