Much of the book is clearly just a rephrase of specific pages of Microsoft's MSDN library which you can get free online. The diagrams, tables, content and order of the paragraphs of the book section closely match the MSDN pages with the exception that much of the critical information is left out. In many instances it is clear that the authors - and I use the term authors loosely - did not understand what they were reading on MSDN while "writing" the chapter and therefore the re-write is inaccurate. For instance, the following quote is the authors' description of the ADO.Net Persist Security Info property:
"Specifies whether sensitive security information is to be resent if a connection is reopened."
Are these people just making it up as they go along, or what? If you know anything about ADO or ADO.Net then you know that Persist Security Info only refers to whether you can, in code, retrieve the password information from the connection string of an open connection. Regardless of how Persist Security Info is set, the password is available for opening or reopening the connection.
Wait! Maybe this book was intended to be a work of fiction about C#! It's just listed in the wrong section! That would explain the authors just making it up as they went along.
As for being All-in-One, I would call it None-in-One. Many key sections of the book are incomplete and don't tell you that they're incomplete. Other sections are incomplete and tell you to read MSDN for more information. I thought that was what I bought the book for...so I wouldn't have to read the tens of thousands of pages of MSDN.
I have to wonder if the authors have ever written a C# program in Visual Studio. My guess is probably not. This is a quote from the book:
"Notice in the code generated by the Windows Forms Designer that a call to the method InitializeComponent() is made in the constructor of the form. You can then place any of your initialization code in the InitializeComponent() method."
There is no way that the authors have ever successfully done that - added initialization code in the InitializeComponent() method. Anyone who has ever written a C# program in Visual Studio.Net knows that the code in the InitializeComponent method is created by the designer and any changes you make there will be lost as soon as you make a change in the designer.
This is the second (and last) McGraw Hill/Osborne All-in-One book I have purchased. I bought a CCIE edition several years ago. It was as error-filled as this one. Many of us who have been around a long time remember when Adam Osborne was a cultural icon. It's disappointing that the books that now bear his name are not of the same caliber as the books of yesteryear.
But I am being too harsh. I should be sensitive and understanding. The authors are undoubtedly ridden with guilt over having caused hundreds or thousands of unsuspecting buyers to spend money on this book and then waste $125 each taking, and failing miserably, the Microsoft certification exams. That guilt, combined with the shame and embarrassment they feel for having created the lowest rated certification book on the topic, should be punishment enough. I should be reaching out to them, feeling their pain...

