Thanks for the time spent on this I really appreciate it :)

I'm fairly new to activerecord, you said

"lazily decide it's state the first time it's called instead of doing at
entity load time?"

I'm not sure how you do this I thought this is actually what I was trying to
do.....

The "Job" object is being referenced at many different places in the web
application so I don't want to put checks all throughout the web app to test
for expiry. I need some centralized method (like OnLoad) to check for this
expiry. If I can "lazily" decide its state somehow the first time its called
I would love to know how to do this!


On Thu, Dec 17, 2009 at 2:31 PM, Patrick Steele <[email protected]>wrote:

> Interesting.  I dug through the ActiveRecord code and the OnLoad
> method ties into NHibernate's IInterceptor.OnLoad.  This method is
> called *before* the data returned from the database is used to
> populate the entity.  In fact, the method comment states:
>
> /// <summary>
> /// Hook to transform the read data
> /// from the database before populating
> /// the object instance
> /// </summary>
>
> So that is why your entity is empty during OnLoad.  However, what I
> found interesting is that NHibernate's IInterceptor.OnLoad is passed
> the data read in from the database giving you a chance to change it
> before it is used to populate the entity (which sounds like exactly
> what you want).  But that information is not relayed down into the
> ActiveRecordBase OnLoad method.  Not sure why that is.
>
> So I guess one possible workaround is to create your own IInterceptor
> (or inherit from NHibernate.EmptyInterceptor and override the OnLoad
> functionality like ActiveRecord did).  You could have your expired
> check there.  The InterceptorFactory.Create delegate can be assigned
> to create an instance of your interceptor instead of the default
> ActiveRecord one.
>
> And this is all based on me skimming over the code for about 15-20
> minutes, so take it with a grain of salt.  There may be an easier way
> to do this.  For example, if you have an "Expired" property, could you
> lazily decide it's state the first time it's called instead of doing
> it at entity load time?
>
> ---
> Patrick Steele
> http://weblogs.asp.net/psteele
>
>
>
> On Wed, Dec 16, 2009 at 8:32 PM, Paul de Wit <[email protected]> wrote:
> > Anyone have any thoughts on this problem?
> >
> > On Thu, Dec 17, 2009 at 1:43 AM, Paul de Wit <[email protected]> wrote:
> >>
> >> Hey
> >> Thanks for the quick reply it inherits from "ActiveRecordBase<Job>"
> >> On Thu, Dec 17, 2009 at 12:59 AM, Wayne Douglas
> >> <[email protected]> wrote:
> >>>
> >>> what does this class inherit from that provides the OnLoad method
> you're
> >>> overriding?
> >>> need some more info.
> >>> w://
> >>>
> >>> On Wed, Dec 16, 2009 at 1:27 PM, paulddw <[email protected]> wrote:
> >>>>
> >>>> This method is inside a class called "Job". Everytime a job is loaded
> >>>> I would like to check the status and set to expired if required.
> >>>> However the properties on the instance are all null. How do I populate
> >>>> the instance??
> >>>>
> >>>> protected override void OnLoad(object id)
> >>>> {
> >>>>     base.OnLoad(id);
> >>>>     //manipulate data here
> >>>>
> >>>> }
> >>>>
> >>>> --
> >>>>
> >>>> 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]<castle-project-users%[email protected]>
> .
> >>>> For more options, visit this group at
> >>>> http://groups.google.com/group/castle-project-users?hl=en.
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>> --
> >>> Cheers,
> >>>
> >>> w://
> >>>
> >>> --
> >>>
> >>> 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]<castle-project-users%[email protected]>
> .
> >>> For more options, visit this group at
> >>> http://groups.google.com/group/castle-project-users?hl=en.
> >>
> >
> > --
> >
> > 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]<castle-project-users%[email protected]>
> .
> > For more options, visit this group at
> > http://groups.google.com/group/castle-project-users?hl=en.
> >
>
> --
>
> 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]<castle-project-users%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/castle-project-users?hl=en.
>
>
>

--

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