CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

David Hayden [MVP C#]

         .NET Tutorials, Patterns, and Practices

Pro ADO.NET 2.0 Book Review

I finished the final chapter of Pro ADO.NET 2.0 last night and highly recommend it if you are looking for a book on ADO.NET. Read about it on Apress.

 

Summary

Pro ADO.NET 2.0 is about half the thickness of an older book it replaces on my bookshelf, yet delivers higher quality content, better code examples, and more best practices.  It has a very comfortable and easy-to-follow writing style that gets you up to speed quickly on the fundamentals and then hits you with best practices, do's and don'ts, and advanced scenarios.  It is evident from the examples and recommendations in the book that the author is an actual developer solving real-world problems on a day-to-day basis.

 

Description

Pro ADO.NET 2.0 starts out with the basics:  ADO.NET Object Model, Connected vs. Disconnected ADO.NET, and the different players in each category (Connections, DataReaders, DataSets, etc.).  It provides a concise and meaningful description of these objects as opposed to regurgitating MSDN documentation and every last property or setting.

Examples are provided throughout the book in both C# and VB.NET mentioning both SQL Server and Oracle.  The examples cover the basics and provide “templates” of how the ADO.NET code should flow in your own programs.  Once the fundamentals are described, the author goes further and discusses more advanced, real-world scenarious as well as the do's and don'ts.

The focus on best practices and advanced scenarios in Pro ADO.NET 2.0 deserves a special note.  Many books in the past on ADO.NET just bore you with too many details on the object model and basics that don't help much in the real world.  Sahil has taken the book to a much more useful and practical level by helping you avoid pitfalls and explaining how and when to use the most advanced topics, such as transactions, SQLCLR, concurrency in multiuser applications, etc.

The last chapter focuses on ADO.NET Best Practices.  Here is where we get into some discussions that are usually heavy battles on blogs, such as DataReader vs. DataSet, Objects vs. DataSets, etc., as well as good discussions on Transactions, Caching, Datasets / Typed Datasets, etc.  Sahil does a good job of introducing these topics and providing some real-world thoughts and avoiding all the non-objective junk that goes along with it.

 

What I Liked

Some thoughts on what I enjoyed:

  • Layout and Writing Style - Easy-to-read with no fluff.
  • Coverage of Advanced Topics - Great coverage of transactions and concurrency in database updates.
  • Focus on Best Practices - Various tips on using a dataset with a complex hierarchy of data, connected vs. disconnected data access, when and how to use transactions, and the last chapter dedicated to various best practices of all kinds.

 

Additional Content I Would Have Liked

A few items that I would have enjoyed reading about in more detail, but are probably a bit out-of-scope for the book:

  • Sahil's thoughts on Enterprise Library and various application blocks put out by Microsoft Patterns and Practices to help with ADO.NET.
  • More about best practices on implementing and interacting with a data layer from the presentation and business layers in your applications - a skeleton template for using ADO.NET from n-layer applications.

 

Links

A couple of links associated with the book:

 



Comments

Sahil Malik said:

WOOOOOOOOOOOOOOOOOOOOOOOHOOOOOOOOOOO :)))

David, I had no idea you were reading it man :). And I am SO happy that you liked it.

BTW, Do you think I could coax you into copy pasting this on Amazon.com?

BTW, I do want to address the two points you bring up --

a) Sahil's thoughts on Enterprise Library and various application blocks put out by Microsoft Patterns and Practices to help with ADO.NET.

Okay, I was considering doing that. The issue is, it is quite a moving target, and .. hmm .. have they formalized on a 2.0 P&P? Some of the concepts I am sure would remain constant, but this in itself can serve very well as a reference at multiple places in the book .. i.e. ... "Enterprise Library does this .. because of .. blaahh". The reason I didn't even do that was, because frequently I see people saying "I use SqlHelper, WTF is ADO.NET". :). I wanted to ensure that the reader got through with ADO.NET concepts, and then he/she could automagically understand enterprise library - not to mention Enterprise Library is more than just ADO.NET

b) More about best practices on implementing and interacting with a data layer from the presentation and business layers in your applications - a skeleton template for using ADO.NET from n-layer applications.

... AHA ... :). Now this particular topic .. I DID want to write about. If you note the quote/tag line at the top of the book, it says "The only ADO.NET book you will ever need". I intend to follow it with another book with a tagline that says "The only ADO.NET book you will ever want".

Why I split this into two books? Well I started writing all that goo within one book - but then it would have exceeded 1200 pages LOL :). And also, when you talk about application architecture, it is a lot more than ADO.NET, though I feel ADO.NET is still the pumping heart of your system. So, it was quite a challenge to keep it an ADO.NET book, and yet create another book on "architecture". I do however intend to write a book #2 that builds upon this one and talks about here is how you do xxx and I picked a datareader over dataset because of yyy .. and .. if you wanna read more about the choice, refer to such and such portion of Pro ADO.NET 2.0.

:) .. and that'll be the only ADO.NET/Architecture book you will ever want.

I think sometime next year I would release such a book - right now I'm just too bummed out with overwork. :)

Oh and don't forget to copy pasting the above review on Amazon.com :). Thanks man !! Glad u liked it !!
# October 27, 2005 1:40 PM

Bill said:

David - I couldn't agree with you more, Sahil hit a home run on this one.
# October 27, 2005 5:55 PM

David Hayden said:

Sahil, I'll do a copy and paste on Amazon this weekend :)
# October 27, 2005 6:44 PM

John Papa said:

Sahil,

I generally read everything I can on data access and I am very picky (gee, really?) ... but so far I think you did a superb job! I am only part way through but I can generally tell a stinker from the first few chapters ... and yours is far from that.

Great job, man!

-- JP
# October 27, 2005 8:50 PM

Sahil Malik said:

Thanks John .. I think most advanced readers, such as yourself, will appreciate the later chapters even more. Chaps 9 thru 11 are quite interesting IMO.

Hey, amazon.com review? :) .. I kinda remind everyone I see to do that LOL :)

BTW, I chit chatted with the publisher today, and I really like the sales numbers we've been hitting so far. Still nervous though LOL :)
# October 27, 2005 11:23 PM

Ben Bryant said:

Okay I am finally going to order it. I've been hemming and hawing since I already have Esposito's book on ASP.NET 2.0 but this review pushed me over the edge.
# October 27, 2005 11:35 PM

Sahil Malik said:

COOL :) I hope you like it Ben .. and Thank you !! :)
# October 28, 2005 12:07 AM

Sahil Malik [MVP C#] said:

Y'know, I don't have any kids, but I can see why this feels like watching your son graduate.
It was...
# October 31, 2005 1:54 PM

Sahil Malik [MVP C#] said:

Y'know, I don't have any kids, but I can see why this feels like watching your son graduate.
It was...
# October 31, 2005 1:55 PM

Sahil Malik [MVP C#] said:

Y'know, I don't have any kids, but I can see why this feels like watching your son graduate.
It was...
# October 31, 2005 2:05 PM

Christopher Steen said:

A New Codus Release
[Via: breichelt ]
ASP.NET Podcast Show #26 - The Guru of Gurus Bob
Beauchemin...
# November 2, 2005 11:22 PM

David Hayden [MVP C#] said:

Framework Design Guidelines - Conventions, Idioms, and Patterns for Reusable .NET Libraries is one...
# February 5, 2006 5:09 PM
Check out Devlicio.us!

This Blog

Syndication

News

CodeBetter.Com Home