The Data Access Layer

I was discussing the topic of Data Access Layers with Ben Harrell tonight and it prompted some good thoughts about DAL, especially in relation to viewing them as building an API or Framework, which other developers will consume but not necessarily care about how things are implemented.

The discussion centered around using the new strongly typed TableAdapters in 2.0 versus business objects, Rocky Lhotka style, where the data and the business logic are encapsulated together.

I am only 30 pages or so into Lhotka's book, so I have not ascertained what all his arguments are in favor of this approach. However, this approach does seem cleaner and more developer friendly as you can be more explicit with how data is consumed and sent back to the data store.

Furthermore, properties on these objects will likely serialize a lot smaller than a TableAdapter will which may or may not be a consideratoin given the transport layers that the object travels over as well as the throughput required.

What do you prefer? Why?