@Jeff - I think you miss the distinction between one use of a fluent language that doesn’t add any value beyond the nebulous distinction of being more fluent versus the SubSonic case where there is a lot more value being added beyond just a fluent interface. If SubSonic was just about putting a fluent interface on SQL then you might have a point, but it does not, which even you acknowledge by your reference of a need to create a DAL.
The argument for fully understanding SQL is about as valid as claiming that every C# programmer should fully understand Machine Language, Assembly Language and MSIL since C# is really just an abstraction of those lower level concepts. That is the point of abstraction, so you don’t have to fully understand the lower level. I think it is pure folly to think that I will ever be able to craft optimized SQL queries even close to the same level as a DBA who lives and breathes SQL. We are already putting too many languages on the individual programmer. A typical Asp.Net developer is forced to deal with VB/C# (sometimes both), HTML, CSS, JavaScript, SQL and possibly even some XSLT. At some point you are forced to either 1) hire a bunch of specialists who understand how to write efficient code for each of the "DSL"s, or 2) abstract out all of the lower level languages to make it possible for most programmers, who are generalists, to still develop apps. I would argue that few development teams have the luxury of a bunch of specialists at their disposal and thus there is absolutely a need for higher level abstractions - even leaky ones - over some of these DSLs.