I'm not sure I understand but...

<< [...] Session is the same betwwen calls. [...]>>
<< [...] query.ExecuteUpdate(); [...] >>

Are you expecting your call to ExecuteUpdate to update the state inside your 
ISession? I don't think that will work.

Session keeps a first level cache. The state of this cache won't be updated 
when calling ExecuteUpdate AFAIK - no entities are returned.

/Roger



-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of 
Yauhen
Sent: den 30 september 2010 16:10
To: nhusers
Subject: [nhusers] Re: NHibernate cache

so nobody has ideas?

On Sep 28, 12:50 pm, Yauhen <[email protected]> wrote:
> I have found very strange effect when using nhibernate.
> I am trying to do one clever update operation. Then read saved data
> from database.
> Operations are mostly based on sql queries. In database data are ok.
> But by some strange reason nhibernate uses cached old data.
> Operations are described like following:
> <class name="Message"  table="Messages" >
>                 <id name="Id" type="Int32" column="Id">
>                         <generator class="identity"/>
>                 </id>
>                 <property name="Subject" column="Subject" type="String"/>
>                 <property name="CategoryId" column="CategoryId" type="Int32"/>
>
> <sql-query name="Message.Delete">
>     <synchronize table="Messages"/>
>     UPDATE Messages
>     SET CategoryId = (  /* long select to decide to which category to
> move*/
>                                )
>      WHERE Id = :messageId
>   </sql-query>
>
>  <sql-query name="Message.GetDetails">
>     <return alias="msg" class="Message"/>
>         SELECT  {msg.*}
>         FROM Messages {msg}
>         WHERE msg.Id = :messageId
>   </sql-query>
>
> when calling delete/update query I use syntax like following
>  using (ITransaction trans = _session.BeginTransaction())
>             {
>                 IQuery query =
> _session.GetNamedQuery("Message.Delete");
>                 query.SetParameter<IdT>(paramName, id);
>                 query.ExecuteUpdate();
>                 trans.Commit();
>
>                  _session.Flush();
>             }
> when calling read:
> IQuery query = _session.GetNamedQuery("Message.GetDetails");
> query.SetInt32("messageId", messageId);
> query.List<Message>();
>
> Session is the same betwwen calls. Caching occurs somewhere inside
> NHibernate.Loader
>
> obj = session.GetEntityUsingInterceptor(key);

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


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