Hello again,

I found this interesting link 
http://fabiomaulo.blogspot.com/2008/10/how-test-your-mappings-ghostbuster.html 
where I could understood
why my entity was getting updated.

In my model I have a class named [Client] which utilize an enumerator as custom 
type,
well, my model said the ColumnType for Status property was Int32, while in the 
fact it was of ClientStatus Type

        [Property("Status"), ColumnType="Int32"]

        public virtual ClientStatus Status

        {

            get { return _status; }

            set { _status = value; }

        }



NHbibernate doesn't throws any execption because ClientStatus is convertible to 
Int32

but when the session is disposed, NHibernate see my Client model as dirty.



All I had to do was to remove this column type and it looks like this now:



        [Property("Status")]

        public virtual ClientStatus Status

        {

            get { return _status; }

            set { _status = value; }

        }

Everything is perfect know!

Hope this thread helps some other people like it helps me

Thank you Makus..

----- Original Message ----- 

  From: Markus Zywitza 
  To: [email protected] 
  Sent: Thursday, July 09, 2009 9:31 AM
  Subject: Re: Why AR is Updating When Performing a Select


  you can add an PreUpdateEventListener and compare the cached and actual 
object states to find the changes.

  -Markus


  2009/7/9 Cesar Sanz <[email protected]>

    Hello markus and Thanx

    using (new SessionScope(FlushAction.Never)) did works!


    >Normally, if there is no change in the objects, nothing happens (the 
entities are not dirty). 

    Normally?? Is there a chance that this happens without entities not been 
dirty?

    >If you experience flushing after a simple load, check whether your code 
changes anything in the entities.

    I followed my code and no changes are made. Is there a way to check if my 
entity is dirty? Can NHibernate shows me 
    the changes...

    Thanx for answering

    ----- Original Message ----- 
      From: Markus Zywitza 
      To: [email protected] 
      Sent: Thursday, July 09, 2009 12:02 AM
      Subject: Re: Why AR is Updating When Performing a Select


      When AR/NH loads entities, it puts them into a cache. When the 
session(scope) disposes, the objects in the cache are checked whether they have 
been changed and the changes are written back (flushed) to the DB.

      Normally, if there is no change in the objects, nothing happens (the 
entities are not dirty). If you experience flushing after a simple load, check 
whether your code changes anything in the entities.

      As a workaround, you can load your entities in a separate read-only 
sessionscope:

      using (new SessionScope(FlushAction.Never))
      {
       // Load here
      }
      // Don't access lazy properties here!!!

      The downside is that you can't access lazy properties in your view 
templates.

      -Markus

      2009/7/9 [email protected] <[email protected]>


        Hello..

        I am in a hurry cuz I have to release a small project.

        I use AR for this project, my model is simple,

        [Client] has many [Product]

        This is used in a web application, so a new session is opened on each
        request.

        The point is.. when I perform a Client.FindAll() it select all the
        clients (which is desirable) but at
        the end of the request, I can see AR is updating each and every client
        that found..

        I see no changes are really made.. So, I don't know what is happening
        under the hood..

        I appreciate any kind of help.

        Best regards 

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" 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/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to