More progress.  I've been walking through the NHibernate Source Code.
The LocationProxy is created during my query and NHibernate attempts
to initialize it.  That is, NHibernate sends a SQL query to retrieve
info from the Location table, and the Location proxy's "isInitialized"
variable gets set to "true".  However, the properties of the
LocationProxy all remain set to null or 0.

Are there common problems that cause this?  I haven't made any of my
properties "virtual" -- is this bad?

Fabio, thank you for your persistent attention...though that last post
was a little unsettling.


On Mar 16, 10:47 pm, Fabio Maulo <[email protected]> wrote:
> Only God may know what you are doing.
>
> 2010/3/16 SedulousTurtle <[email protected]>
>
>
>
>
>
> > More progress and strange results.
>
> > If I use proxy unpacking, as described in Graham's link,
>
> >http://www.google.com/url?sa=D&q=http://groups.google.com/group/nhuse...
>
> > then it WORKS CORRECTLY! (Thanks Graham!) and will return the expected
> > Institution object.  But why won't it lazy load if I can get it with
> > unpacking?
>
> > In other words, this breaks:
> > -----------------------
> > string WontLoad =
> > instrumentList[0].Location.Institution.ToString();
> > -----------------------
>
> > But this works:
> > -----------------------
> > Location unpackedLocation =
> > (Location)session.GetSessionImplementation()
> >    .PersistenceContext.Unproxy(instrumentList[0].Location);
>
> > Institution unpackedInstitution =
> > (Institution)session.GetSessionImplementation()
> >    .PersistenceContext.Unproxy(unpackedLocation.Institution);
>
> > string WillLoad = unpackedInstitution.ToString();
> > -----------------------
>
> > On Mar 16, 10:31 am, Fabio Maulo <[email protected]> wrote:
> > > If it is null is because there isn't a relation and not because it is a
> > > proxy.
>
> > > 2010/3/16 SedulousTurtle <[email protected]>
>
> > > > Fabio, Graham, and John, thank you for your help.  From your posts, I
> > > > now understand how the proxies work a little better -- I don't usually
> > > > need to worry about replacing them with the proper objects, I just
> > > > need to make sure I've accessed all the data I need before the session
> > > > is closed.
>
> > > > However, I think there's also a more subtle issue I'm facing.  I get
> > > > an error with this code:
> > > > ----------
> > > > IList<Instrument> instrumentList;
>
> > > > using (ISession ses = NHibernateHelper.OpenSession())
> > > > using (ses.BeginTransaction())
> > > > {
> > > >     instrumentList = ses.CreateQuery(@"FROM
> > > > Instrument").List<Instrument>();
> > > >    string WontLoad =
> > > > instrumentList[0].Location.Institution.ToString();
>
> > > >    ses.Transaction.Commit();
> > > > }
> > > > ----------
>
> > > > What Happens: NullException, because I call ToString() on Institution,
> > > > which is null.
>
> > > > What I Expect: Location.Institution is initially null -- because its a
> > > > lazy loaded reference stored in a LocationProxy.  But I would expect
> > > > Institution to be lazily loaded when I cann ToString() on it -- and
> > > > yet that's not what I'm observing.
>
> > > > I've checked the database thoroughly and am very confident that the
> > > > data is saved properly.
>
> > > > My main question: Am I using the NHibernate data retrieval API
> > > > improperly, or is there something else going on behind the scenes
> > > > (like an error in my XML mapping) that's preventing lazy loading from
> > > > operating correctly?
>
> > > > On Mar 15, 6:42 pm, John Davidson <[email protected]> wrote:
> > > > > I have found the best performance is to create a separate object for
> > the
> > > > > grid and move data from the NHibernate object to the grid object.
> > Instead
> > > > of
> > > > > using a grid hierarchy I put a second grid on the page to manage the
> > > > child
> > > > > data and only get the child data after the user makes a selection of
> > the
> > > > > parent. Of course the second grid also has its own data object.
>
> > > > > Doing it like this there is no issue with proxies or sending too much
> > > > > unnecessary data to the web page. It keeps the web page leaner and
> > more
> > > > > responsive.
>
> > > > > John Davidson
>
> > > > > On Mon, Mar 15, 2010 at 4:27 PM, Graham Bunce <
> > [email protected]
> > > > >wrote:
>
> > > > > > Sorry, too tired to read the full post and work out what's going on
> > > > > > for you but look at this thread that I raised with similar
> > questions:
>
> >http://groups.google.com/group/nhusers/browse_thread/thread/fce0810be.
> > > > ..
>
> > > > > > A proxy will always be a proxy unless you force replace it (I
> > think)
>
> > > > > > --
> > > > > > 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]<nhusers%[email protected]­>
> > <nhusers%[email protected]<nhusers%252bunsubscr...@googlegroup­s.com>
> > ­>
> > > > <nhusers%[email protected]<nhusers%252bunsubscr...@googlegroup­s.com>
> > <nhusers%252bunsubscr...@googlegroup­s.com>
> > > > ­>
> > > > > > .
> > > > > > For more options, visit this group at
> > > > > >http://groups.google.com/group/nhusers?hl=en.-Hidequoted text -
>
> > > > > - Show quoted text -
>
> > > > --
> > > > 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]<nhusers%[email protected]­>
> > <nhusers%[email protected]<nhusers%252bunsubscr...@googlegroup­s.com>
> > ­>
> > > > .
> > > > For more options, visit this group at
> > > >http://groups.google.com/group/nhusers?hl=en.
>
> > > --
> > > Fabio Maulo- Hide quoted text -
>
> > > - Show quoted text -
>
> > --
> > 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]<nhusers%[email protected]­>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/nhusers?hl=en.
>
> --
> Fabio Maulo- Hide quoted text -
>
> - Show quoted text -

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