Is there something wrong with inheriting the classes generated in the .dbml file?
There is nothing bad. Similarly, you can make the generated classes inherit from your own base classes or implement other interfaces than the finished ones.
Are the generated SQL commands efficient?
Yes, but, as always, you need to keep an eye on him. If you write your queries in linq, then the same as good SQL queries, the generated sql will be very efficient. L2S is pretty good at optimizing in some scenarios, for example. it eliminates everything that can be eliminated on the client, etc. However, you can force it to generate bad SQL, just as you can write inefficient raw SQL queries manually. Click here for an example ...
When I used the SQL Server proxy, I noticed when I get a list of all the records using linqDataSource to bind to the gridView, I would see two queries being executed. The first was SELECT COUNT (*), and then the SELECT Top (PageSizeOfGrid). Why?
I donโt know, I have never used LinqDataSource. I prefer to go with raw linq queries, I'm not a fan of automated data / object source controls. Hope someone else can shed some light on this one.
Would I be better off using an ObjectDataSource that gets all the records from the stored procedure and caches them?
Similar to the previous ... :)
Entity Framework? I donโt know much about this, but I think it may be too heavy for my needs. Most of my databases are pretty simple 10 - 20 tables, which can have a lot of relationships. Is it worth looking at?
Wait until the next version of EF. It will be released as part of .net 4.0. The current version of EF is not ready for prime time, and for some odd reason, Microsoft decided not to fix the basic problems, but instead spend all their time and energy working in 4.0. Whether this person will be a worthy competitor / replacement for L2S remains to be seen. (I just tried beta 1, and I have the same problems as EFv1, primarily problems with bad generated SQL queries ... ( ex 1 ex 2 ex 3 , etc.)