Both have their pros and their cons. The SqlDataSource is easy to set up, but harder to maintain. If you rename tables or columns, you won't notice your SQL is broken until you run the page.
The EntityDataSource is, at first, harder to set up and configure, but then provides better (but not perfect) type checking.
However, the EntitDataSource control is now considered obsolete. Instead, you're advised to use Model Binding: http://blogs.msdn.com/b/webdev/archi...web-forms.aspx
This requires a more recent version of .NET / Visual Studio than this book targets but if you happen to use VS 2012 or later, this is the way forward.