Hi.

I have written 3-tier application,where server loads/saves stuff, and for DTOs 
are used AR.

Since on client, I dont use save/load/etc, they act as simple POCO.

 

I think that whats great about AR is that there is no mapping, but having 
separate DTO is another form of mapping.

 

Where can I learn more about AutoMapper?

 

BR,ivan

 

From: [email protected] 
[mailto:[email protected]] On Behalf Of Markus Zywitza
Sent: Tuesday, October 26, 2010 8:19 PM
To: [email protected]
Subject: Re: two questions

 

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

 <mailto:[email protected]> [email protected]

tel: +386 51 680 415

 



 <http://www.apida.si/> 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] 
<mailto: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] 
<mailto: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] 
<mailto: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] 
<mailto: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] 
<mailto: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].
For more options, visit this group at 
http://groups.google.com/group/castle-project-devel?hl=en.

<<image001.png>>

Reply via email to