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.DriverConnectionProvider</
> > > > 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