I wouldn't say its a case of one or the other - its what ever fits best for your needs.
The datasource controls are very easy to wire up and get going and probably suited to 50%-75% of what you might need, but if your requirements are complex it may be easier to use the services thru code behind.
My current project uses both techniques and additionally we have custom stored procs that return datasets which have had all of the required joins done. Although its not strictly sticking to the entity model it does make wiring up gridviews (and the like) easier with regards to sorting and showing relating values (and more performant).
hth
swin
-------------------------------------------------
Member of the .NetTiers team
-------------------------------------------------