Guys, pause please!

Ok, I can see that adding the notlazyloaded method call will put lazy =
false on my class on the generated xml. Now the problem is that when this
xml is loaded I get exceptions saying that my properties aren't virtual (and
no, they're not and no I don't want lazy lozading on myt class). 

Can anyone help and tell me why NH insist in using lazy when the lazy
attribute on the class is set to false and the default-lazy attribute on the
nhibernate element is set to true?

Thanks.

> -----Original Message-----
> From: fluent-nhibernate@googlegroups.com [mailto:fluent-
> nhibern...@googlegroups.com] On Behalf Of VisualHint
> Sent: segunda-feira, 26 de Janeiro de 2009 15:58
> To: Fluent NHibernate
> Subject: [fluent-nhib] Re: Need some explanations about LazyLoad method
> 
> 
> I understand a bit better now but note that:
> 
> 1. When I generate the hbm from FNH and both LazyLoad and
> NotLazyLoaded are not set on the class, then no lazy attribute is
> added to the hbm file which maybe contradicts what you say ("Fluent
> NHibernate always sets something")
> 
> 2. If your explanation is right, LazyLoad() on the association is
> absolutely of no use.
> 
> N.
> 
> On Jan 26, 10:23 am, James Gregory <jagregory....@gmail.com> wrote:
> > That sounds correct to me. Whatever gets set on the class takes
> precedence
> > over what you set in the relationship.
> > HBM allowed you to not set anything for lazy load, while Fluent
> NHibernate
> > always sets something; there's no way not to specify a value. So the
> lazy on
> > the relationship is used when the entity doesn't have any kind of
> lazy
> > setting, but if it does then it overrides whatever is set on the
> > relationship; because FNH always sets a lazy value, it always
> overrides the
> > relationship.
> >
> > No bug here as far as I can tell, but the lazy on the references
> method is
> > perhaps redundant.
> >
> > On Mon, Jan 26, 2009 at 3:16 PM, VisualHint <cadil...@gmail.com>
> wrote:
> >
> > > ok, so now that the default is lazy=true, I added NotLazyLoaded to
> my
> > > classmap. I set LazyLoad on my association only and again it is not
> > > lazy loaded.
> > > If however, I remove NotLazyLoaded, then the default takes
> precedence
> > > and with or without LazyLoad on my association, it is lazy loaded.
> > > So I suspect something is wrong in the first case. The fault to NH
> > > maybe (I'm with 2.1.0.1001).
> >
> > > N.
> >
> > > On Jan 26, 10:09 am, James Gregory <jagregory....@gmail.com> wrote:
> > > > How are you getting your fluent mappings into nhibernate?
> default-lazy
> > > > should definitely be true if you're running on the latest trunk.
> >
> > > > On Mon, Jan 26, 2009 at 2:54 PM, VisualHint <cadil...@gmail.com>
> wrote:
> >
> > > > > If I call System.Xml.XmlDocument doc = CreateMapping(new
> > > > > FluentNHibernate.MappingVisitor());
> >
> > > > > I get an hbm that has default-lazy=false and I can assure you
> that I
> > > > > got the latest FNH from the trunk, rebuilt it and referenced
> it. The
> > > > > various lazy settings are correctly added in the xml file for
> the 2
> > > > > versions of LazyLoad() methods.
> > > > > I don't touch to the conventions.
> > > > > Configuration is done through the hibernate.cfg.xml and it
> contains
> > > > > only the minimum:
> >
> > > > > <?xml version="1.0" encoding="utf-8" ?>
> > > > > <hibernate-configuration xmlns="urn:nhibernate-configuration-
> 2.2">
> > > > >  <session-factory>
> > > > >    <property name="connection.connection_string">Server=.
> > > > > \SQLEXPRESS;Database=mydb;Integrated Security=True;</property>
> > > > >    <property
> name="dialect">NHibernate.Dialect.MsSql2005Dialect</
> > > > > property>
> > > > >    <property
> >
> > >
> name="connection.provider">NHibernate.Connection.DriverConnectionProvid
> er</
> > > > > property>
> > > > >    <property
> > > > >
> name="connection.driver_class">NHibernate.Driver.SqlClientDriver</
> > > > > property>
> > > > >    <property name="connection.release_mode">auto</property>
> > > > >    <property name="adonet.batch_size">500</property>
> >
> > > > >    <property name="show_sql">true</property>
> > > > >    <property name="generate_statistics">true</property>
> >
> > > > >  </session-factory>
> > > > > </hibernate-configuration>
> >
> > > > > On Jan 26, 9:45 am, James Gregory <jagregory....@gmail.com>
> wrote:
> > > > > > By default the "default-lazy" attribute is set to true on
> every
> > > mapping
> > > > > > created by Fluent NHibernate, so unless you've overridden
> this using
> > > the
> > > > > > conventions, that's what's getting set. As far as I
> understand, this
> > > > > infers
> > > > > > the class level setting.
> > > > > > How are you configuring your session factory? Could you write
> out
> > > your
> > > > > > mappings using the WriteMappingsTo method of the
> PersistenceModel,
> > > then
> > > > > we
> > > > > > can see what's actually being generated.
> >
> > > > > > On Mon, Jan 26, 2009 at 1:58 PM, VisualHint
> <cadil...@gmail.com>
> > > wrote:
> >
> > > > > > > I use the latest FNH and it still doesn't work. I have to
> > > explicitely
> > > > > > > set LazyLoad on the classmap to get this behavior.
> > > > > > > I understand the difference between the 2 lazyload methods
> but I
> > > don't
> > > > > > > understand when you say:
> >
> > > > > > > > however, the class gets precedence, so if your class
> isn't set
> > > > > > > > to lazy load (which was the default) then the references
> call
> > > won't
> > > > > have
> > > > > > > any
> > > > > > > > effect.
> >
> > > > > > > Logically, if the entity is not forced to LazLoad then
> calling it
> > > or
> > > > > > > not on the association WOULD MAKE a difference.
> > > > > > > If you force it on the classmap then calling LazyLoad on
> the
> > > > > > > association would not change anything. If a NotLazyLoaded
> was
> > > possible
> > > > > > > on the association, then this one would make a difference.
> No?
> >
> > > > > > > About trying with hbm, unfortunately, I tried to learn FNH
> before
> > > HBM
> > > > > > > so this is not something I can immediately try.
> >
> > > > > > > N.
> >
> > > > > > > On Jan 26, 7:14 am, James Gregory <jagregory....@gmail.com>
> wrote:
> > > > > > > > @Nicolas: How old is your copy of Fluent NHibernate?
> Originally
> > > it
> > > > > was
> > > > > > > the
> > > > > > > > default that all entities would be not lazy loaded; so if
> your
> > > copy
> > > > > is
> > > > > > > from
> > > > > > > > then, you won't see the lazy load behaviour.
> > > > > > > > The two different lazy load methods you spoke of do
> different
> > > things,
> > > > > the
> > > > > > > > lazy load on the class sets it at the entity level, so
> whenever
> > > that
> > > > > > > entity
> > > > > > > > is referenced anywhere it's lazy loaded, the other sets
> it for
> > > that
> > > > > > > specific
> > > > > > > > relationship; however, the class gets precedence, so if
> your
> > > class
> > > > > isn't
> > > > > > > set
> > > > > > > > to lazy load (which was the default) then the references
> call
> > > won't
> > > > > have
> > > > > > > any
> > > > > > > > effect.
> >
> > > > > > > > As Seb said, the reason the class lazy load requires
> virtual
> > > methods
> > > > > is
> > > > > > > > because it creates a proxy of the entity. If your methods
> aren't
> > > > > already
> > > > > > > > virtual, then your lazy loading won't be working because
> > > NHibernate
> > > > > won't
> > > > > > > > know how to track it.
> >
> > > > > > > > So what do you need to do? Update your copy of FNH and
> try again,
> > > > > failing
> > > > > > > > that, explicitly set lazy loading in your class and use
> virtuals;
> > > > > that's
> > > > > > > the
> > > > > > > > recommended approach.
> >
> > > > > > > > Please note, this isn't a Fluent NHibernate specific
> issue, you'd
> > > be
> > > > > > > seeing
> > > > > > > > the same behaviour for standard xml mapping too.
> >
> > > > > > > > On Mon, Jan 26, 2009 at 8:57 AM, Paul Batum <
> > > paul.ba...@gmail.com>
> > > > > > > wrote:
> > > > > > > > > When it comes to issues such as this I am somewhat of a
> broken
> > > > > record -
> > > > > > > my
> > > > > > > > > suggestion is always the same:
> >
> > > > > > > > > See if you can get the desired behavior using HBM xml.
> Once you
> > > > > have
> > > > > > > > > working xml, we can compare it to what fluent
> nhibernate is
> > > > > generating
> > > > > > > and
> > > > > > > > > see where the problem lies.
> >
> > > > > > > > > Paul Batum
> >
> > > > > > > > > On Mon, Jan 26, 2009 at 9:16 AM, Chris Marisic <
> > > ch...@marisic.com>
> > > > > > > wrote:
> >
> > > > > > > > >> I noticed this also but I assumed I was handling the
> session
> > > > > > > > >> incorrectly making it fully load the object but maybe
> this
> > > > > actually is
> > > > > > > > >> an issue.
> >
> > > > > > > > >> On Jan 25, 9:20 am, VisualHint <cadil...@gmail.com>
> wrote:
> > > > > > > > >> > Yes I know that Seb (thx anyway). This was just
> telling a
> > > fact.
> > > > > > > > >> > My question is about LazyLoad and why it has no
> effect when
> > > > > called
> > > > > > > on
> > > > > > > > >> > a References() call.
> >
> > > > > > > > >> > Nicolas
> >
> > > > > > > > >> > On Jan 25, 3:44 am, Sebastien Lambla
> <s...@serialseb.com>
> > > > > wrote:
> >
> > > > > > > > >> > > > But doing that has a consequence: All my
> properties in>
> > > the
> > > > > > > "one"
> > > > > > > > >> model must be virtual, even the ones that are not
> related to>
> > > > > fields
> > > > > > > in my
> > > > > > > > >> database.
> >
> > > > > > > > >> > > That's because the object is created as a proxy.
> Any of
> > > your
> > > > > > > property
> > > > > > > > >> may have access or rely on other properties that need
> to be
> > > > > hydrated
> > > > > > > from
> > > > > > > > >> the db. They all need to be virtual so that the first
> cal can
> > > > > trigger
> > > > > > > the
> > > > > > > > >> load. This is an nhibernate thing.
> >
> > > > > > > > >> > > --
> > > > > > > > >> > > Seb
> >
> > > > >
> _________________________________________________________________
> > > > > > > > >> > > Windows Live Messenger just got better .Video
> display
> > > pics,
> > > > > > > contact
> > > > > > > > >> updates & more.http://www.download.live.com/messenger
> 
> 

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Fluent NHibernate" group.
To post to this group, send email to fluent-nhibernate@googlegroups.com
To unsubscribe from this group, send email to 
fluent-nhibernate+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/fluent-nhibernate?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to