One thing I've discovered over the years is that most .NET programmers - even seasoned ones with good programming knowledge - don't know squat about databases. In fact, I believe that's why so many programmers jump to something like Linq or NoSql, not because they think it's the best choice for the job, but rather because they simply don't understand databases.
It's my opinion that if you can't do most of your data manipulation in your data layer, and you really understand SQL (which is, quite frankly, cake compared to any other programming language except HTML), you are missing a huge chunk of knowledge that you really should have.
PS: If you don't understand the value of 'Explain' or your local databases equivelent then a day or to is all it's going to take to save yourself from a world of pain.
Or even "Surely every X should know their Y well enough".
If you consider NHibernate, a lot of time working with it is spent optimising criteria queries to ensure that the IO and CPU on the DB server are not spanked to death and that the loading strategy keeps the read count down.