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.
