Obviously I've done this before. What I (thought I) saw was injection-proof parameterized SQL structured for server compilation. Joins were automatic. So can you be more explicit?
If you're determined to use SPs, did you check out the ability to call SPs as a method on the DataContext? Yes, I know about calling SPs.
Yes, the generated code uses SQL parameters, and joins are automatic - but the generated code is often not as optimized as what many would write. For instance, even if you're aggregating multiple columns from a single child table, it uses correlated subqueries quite heavily and inefficiently. The generated code has been one of the criticisms of Linq to SQL. Yes, I realize it's still early in the game, but I'm far from convinced that linq to sql will offer advantages to those who are using stored procs (which happens to be the consensus of many out there).