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.

Reply via email to