Lazy is perfect for n-tier situations, when you use DTOs and AutoMapper. If you have a 2-tier (client/database) app, chances are good, that some collections are never needed, so laziness saves you from loading to much.
In a 3-tier app, you should use DTOs specialized for the query and AutoMapper to fill them. Then laziness is necessary to not load properties that are not mapped to the requested DTOs. Sharing AR objects between server and client in a 3-tier app is not recommended at all, lazy or not. -Markus 2010/10/23 Ivan Bolčina <[email protected]> > Say, is there a way to specify this: > > Blog : Posts > > > > Load a blog by id, but leave posts empty. On save don't save posts. > > > > But, if there is explicit call, lets say blog.LoadPosts(), then posts would > be loaded and therefore a relation would be »normal«. > > > > The reason is that I found that there are so many sqls executing – it is > logical, because objects are in relation, but i would like to be more in > control (n-tier situation). Lazy is not good for n-tier situations. > > > > Right now I have this configured like this. > > Blog has a array of posts(POSTS), but it is NOT attributesied as HasMany. > > Post has a BLOG property, but it is also NOT attibutiesed as BelongsTo > > > > When I need to send those to client, i manually fill necessary details. > > > > But is there a way to run-time attributise an element, say array of posts > in a blog, and then load it using this run-time attributisation? > > > > Hope you understand this. > > > > Br,ivan > > > > *From:* [email protected] [mailto: > [email protected]] *On Behalf Of *Markus Zywitza > *Sent:* Wednesday, October 20, 2010 9:29 PM > > *To:* [email protected] > *Subject:* Re: two questions > > > > It is not N+1, it is 2. > > Assume you have Blog : Posts as 1 : n with a non-lazy posts collection. > If you load a blog, there are 2 queries - one for the blog and one for all > posts. > > N+1 occurs when you have 1 : n with a lazy collection and you are > enumerating the collection. Then you have one query for the blog and n > queries for n posts. > > As a result, if your collection is not lazy, there is no N + 1. So the > Eager=true flag would be only useful if you had a lazy collection, > nullifying the laziness because of eager loading. > > Eager loading is useful in the case you have a lazy collection but you know > that you need to load all the referenced entities. Then you can specify in a > query, that in this situation there should be no lazy loading, but getting > all the childs at once. > > -Markus > > 2010/10/20 Ivan Bolčina <[email protected]> > > Sorry, I ment why is there not a simple way to do 1 query instead of N+1? > > > > > > > > *From:* [email protected] [mailto: > [email protected]] *On Behalf Of *Markus Zywitza > *Sent:* Wednesday, October 20, 2010 4:50 PM > > > *To:* [email protected] > *Subject:* Re: two questions > > > > Because that's the default behaviour. If you do not specify lazyness, all > entities referenced from a loaded entity are loaded directly after it. > Lazyness is used to stop NH/AR from loading objects that are not needed. > > > > -Markus > > 2010/10/20 Ivan Bolčina <[email protected]> > > Hi. > > > > Why isnt there a flag in relation like lazy but for eager loading? > > > > *From:* [email protected] [mailto: > [email protected]] *On Behalf Of *Roelof Blom > *Sent:* Tuesday, October 19, 2010 9:07 AM > > > *To:* [email protected] > *Subject:* Re: two questions > > > > > http://stw.castleproject.org/Active%20Record.Tuning%20(performance%20improvements).ashx<http://stw.castleproject.org/Active%20Record.Tuning%20%28performance%20improvements%29.ashx> > > On Tue, Oct 19, 2010 at 8:21 AM, Ivan Bolčina <[email protected]> > wrote: > > Wow, nice... How come I didn't find anything in documentation. > > > > Also, is there fetch join in active record? > > > > *From:* [email protected] [mailto: > [email protected]] *On Behalf Of *Roelof Blom > *Sent:* Monday, October 18, 2010 12:52 PM > *To:* [email protected] > *Subject:* Re: two questions > > > > Inline > > On Mon, Oct 18, 2010 at 9:59 AM, Ivan Bolčina <[email protected]> > wrote: > > Hi. > > > > Two questions: > > 1. Is there a LINQ to Caste active record? > > Yes, use the extension methods in > Castle.ActiveRecord.Framework.ActiveRecordLinq, > > or derive from ActiveRecordLinqBase<T> > > 2. What is the best way to write simple queries like »...where name > like '%john%' and age>10« > > use the PredicateBuilder > <http://www.albahari.com/nutshell/predicatebuilder.aspx>class on > the IQueryable supplied by ActiveRecord > > > > Thanks > > > > Ivan Bolčina > SOFTWARE DEVELOPMENT > MANAGER > > [email protected] > > tel: +386 51 680 415 > > > > www.apida.si > > > > > > -- > You received this message because you are subscribed to the Google Groups > "Castle Project Development List" group. > To post to this group, send email to [email protected] > . > To unsubscribe from this group, send email to > [email protected]<castle-project-devel%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/castle-project-devel?hl=en. > > > > -- > You received this message because you are subscribed to the Google Groups > "Castle Project Development List" 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-devel?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Castle Project Development List" group. > To post to this group, send email to [email protected] > . > To unsubscribe from this group, send email to > [email protected]<castle-project-devel%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/castle-project-devel?hl=en. > > > > -- > You received this message because you are subscribed to the Google Groups > "Castle Project Development List" 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-devel?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Castle Project Development List" group. > To post to this group, send email to [email protected] > . > To unsubscribe from this group, send email to > [email protected]<castle-project-devel%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/castle-project-devel?hl=en. > > > > -- > You received this message because you are subscribed to the Google Groups > "Castle Project Development List" 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-devel?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Castle Project Development List" group. > To post to this group, send email to [email protected] > . > To unsubscribe from this group, send email to > [email protected]<castle-project-devel%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/castle-project-devel?hl=en. > > > > -- > You received this message because you are subscribed to the Google Groups > "Castle Project Development List" 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-devel?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Castle Project Development List" group. > To post to this group, send email to [email protected] > . > To unsubscribe from this group, send email to > [email protected]<castle-project-devel%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/castle-project-devel?hl=en. > -- You received this message because you are subscribed to the Google Groups "Castle Project Development List" 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-devel?hl=en.
<<image001.png>>
